PHP的count(数组)和strlen(字符串)的内部实现上是直接显示一个长度变量,还是重头依次数一遍有多少个元素?
关乎我理解这2个函数的效率。。
希望高人能从php的c源码上讲一讲。没有源码看过源码知道的说说也行。
1、count执行时背后有没有“逐个统计”子元素的个数?
2、strlen执行时背后有没有“逐个统计”字符的个数?
==========
我已经找到PHP strlen的源码了,唉沉下去的没几人。。。
正在找count的
=================
结论
strlen直接返回长度变量,没有计算。效率O(1)
count逐个数元素,发生大量计算。效率O(N) ----------------------------------------------
count是针对数组的,返回的是数组的长度,在实现上,数组就是一张hash表,count的时候就是统计这张表的元素个数
strlen是针对字符串的,返回的是字符串的长度,也就是字符串中的字符的个数,在实现上,没看过不清楚。
在使用上,strlen是不能用来统计数组的个数的,
虽然count可以传入字符串作为参数,但是它返回的是相当于count((array)字符串) 也就是 1 的效果。 和strlen返回的意义就不一样了
追问
先读懂我的问题吧,我没有问PHP层面的功能,功能在手册上都写着。问的是
1、count执行时背后有没有逐个统计“子元素”的个数?
2、strlen执行时背后有没有逐个统计“字符”的个数?
题意是把这2句合在一起问的。 注:
sizeof() 函数计算数组中的单元数目或对象中的属性个数。
该函数是 count() 的别名。
百度知道上看到的
来源:
http://zhidao.baidu.com/link?url=uTqPQf48jCkbyHA_cJMcfLSiw5GQd7i6KOWqEEnwVoTWe3YlMqYWc2KLF_3cvaKCl7XmNgw2XmKhql6fJZ0zc_
												

PHP的count(数组)和strlen(字符串)的内部实现的更多相关文章

  1. 在Ajax中将数组转换成字符串(0517-am)

    一.如何在Ajax中将数组转换成字符串 1. 主页面; <head> <meta http-equiv="Content-Type" content=" ...

  2. Java基础——数组应用之字符串String类

    字符串String的使用 Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicode字符J,a,v,a组成的. Java中没有内置的字符串类型,而是在标准Java类库中提供了一 ...

  3. swift和OC - 拆分数组 和 拆分字符串

    1. 拆分数组 /// 根据 数组 截取 指定个数返回 多个数组的集合 func splitArray( array: [Date], withSubSize subSize: Int) -> ...

  4. Java 数组类型转字符串类型

    Java手册 String public String() 初始化一个新创建的 String 对象,使其表示一个空字符序列.注意,由于 String 是不可变的,所以无需使用此构造方法. String ...

  5. 字符串函数(strcpy字符串拷,strcmp字符串比较,strstr字符串查找,strDelChar字符串删除字符,strrev字符串反序,memmove拷贝内存块,strlen字符串长度)

    1.strcpy字符串拷贝拷贝pStrSource到pStrDest,并返回pStrDest地址(源和目标位置重叠情况除外) char *strcpy(char *pStrDest, const ch ...

  6. C#字节数组转换成字符串

    C#字节数组转换成字符串 如果还想从 System.String 类中找到方法进行字符串和字节数组之间的转换,恐怕你会失望了.为了进行这样的转换,我们不得不借助另一个类:System.Text.Enc ...

  7. java标准-密码用数组比用字符串安全

    转载:http://my.oschina.net/jasonultimate/blog/166968 1) Since Strings are immutable in Java if you sto ...

  8. 100怎么变成100.00 || undefined在数字环境下是:NaN || null在数字环境下是0 || 数组的toString()方法把每个元素变成字符串,拼在一起以逗号隔开 || 空数组转换成字符串后是什么?

    100怎么变成100.00?

  9. C#--网络流Stream、字节数组保存到字符串中

    第一种方法: HttpWebRequest httpwebr = (HttpWebRequest)HttpWebRequest.Create(rstr); httpwebr.Method = &quo ...

随机推荐

  1. mysql分组取topn

    本文来自  http://www.jb51.net/article/31590.htm 有些语句sql top n 是sqlserver语法 --按某一字段分组取最大(小)值所在行的数据 代码如下: ...

  2. 分布式事务_02_2PC框架raincat源码解析-启动过程

    一.前言 上一节已经将raincat demo工程运行起来了,这一节来分析下raincat启动过程的源码 主要包括: 事务协调者启动过程 事务参与者启动过程 二.协调者启动过程 主要就是在启动类中通过 ...

  3. hdu-2673-shǎ崽 OrOrOrOrz(水题)

    注意输出格式 #include <iostream> #include <algorithm> using namespace std; +]; int main() { in ...

  4. dyci——IOS动态代码注入

    有时候用xib,更改了布局需要重新运行才可以看到效果,对于比较复杂的应用尤其浪费时间,下面介绍一个工具dyci-不需要重Run应用,也能看到效果 yci的网址:https://github.com/D ...

  5. BZOJ - 2142 礼物 (扩展Lucas定理)

    扩展Lucas定理模板题(貌似这玩意也只能出模板题了吧~~本菜鸡见识鄙薄,有待指正) 原理: https://blog.csdn.net/hqddm1253679098/article/details ...

  6. nginx之 [error] 6702#0:XXX is forbidden (13: Permission denied)

    问题描述: 配置完 nginx 两个虚拟机后,客户端能够访问原始的server ,新增加的 server 虚拟机 不能够访问,报错如下页面 解决过程: 1. 查看报错日志[root@mysql03 n ...

  7. YARN的ACL

    修改完了资源池的权限之后,发现无法查看日志了.报错: User [dr.who] is not authorized to view the logs for... 即使把资源池的权限设置为了*(所有 ...

  8. BZOJ2276:[POI2011]Temperature

    浅谈队列:https://www.cnblogs.com/AKMer/p/10314965.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?i ...

  9. jquery-post 异常

    报错:Client closed connection before receiving entire response 前端请求: $.ajax({ type : 'POST' , url : '/ ...

  10. Azure VMSS ---- PowerShell创建自定义镜像的VMSS集群

    前面一篇文章介绍了如何用PowerShell创建标准镜像的VMSS集群.http://www.cnblogs.com/hengwei/p/7391178.html 本文将介绍,如何用PowerShel ...