PHP的count(数组)和strlen(字符串)的内部实现
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(字符串)的内部实现的更多相关文章
- 在Ajax中将数组转换成字符串(0517-am)
一.如何在Ajax中将数组转换成字符串 1. 主页面; <head> <meta http-equiv="Content-Type" content=" ...
- Java基础——数组应用之字符串String类
字符串String的使用 Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicode字符J,a,v,a组成的. Java中没有内置的字符串类型,而是在标准Java类库中提供了一 ...
- swift和OC - 拆分数组 和 拆分字符串
1. 拆分数组 /// 根据 数组 截取 指定个数返回 多个数组的集合 func splitArray( array: [Date], withSubSize subSize: Int) -> ...
- Java 数组类型转字符串类型
Java手册 String public String() 初始化一个新创建的 String 对象,使其表示一个空字符序列.注意,由于 String 是不可变的,所以无需使用此构造方法. String ...
- 字符串函数(strcpy字符串拷,strcmp字符串比较,strstr字符串查找,strDelChar字符串删除字符,strrev字符串反序,memmove拷贝内存块,strlen字符串长度)
1.strcpy字符串拷贝拷贝pStrSource到pStrDest,并返回pStrDest地址(源和目标位置重叠情况除外) char *strcpy(char *pStrDest, const ch ...
- C#字节数组转换成字符串
C#字节数组转换成字符串 如果还想从 System.String 类中找到方法进行字符串和字节数组之间的转换,恐怕你会失望了.为了进行这样的转换,我们不得不借助另一个类:System.Text.Enc ...
- java标准-密码用数组比用字符串安全
转载:http://my.oschina.net/jasonultimate/blog/166968 1) Since Strings are immutable in Java if you sto ...
- 100怎么变成100.00 || undefined在数字环境下是:NaN || null在数字环境下是0 || 数组的toString()方法把每个元素变成字符串,拼在一起以逗号隔开 || 空数组转换成字符串后是什么?
100怎么变成100.00?
- C#--网络流Stream、字节数组保存到字符串中
第一种方法: HttpWebRequest httpwebr = (HttpWebRequest)HttpWebRequest.Create(rstr); httpwebr.Method = &quo ...
随机推荐
- hdu 1849 Rabbit and Grass(nim)
Rabbit and Grass Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- ROC曲线是通过样本点分类概率画出的 例如某一个sample预测为1概率为0.6 预测为0概率0.4这样画出来,此外如果曲线不是特别平滑的话,那么很可能存在过拟合的情况
ROC和AUC介绍以及如何计算AUC from:http://alexkong.net/2013/06/introduction-to-auc-and-roc/ ROC(Receiver Operat ...
- oralce 索引(1)
本文来自网上整理 来自以下博客内容 http://www.360doc.com/content/13/0712/11/13136648_299364992.shtml; http://www.cnbl ...
- 一段tcl代码
#!/usr/bin/wish proc icanspeak {} { set name [.ent get] } { exec s $name } } label .lab -text " ...
- 数据处理之pandas库
1. Series对象 由于series对象很简单,跟数组类似,但多了一些额外的功能,偷个懒,用思维导图表示 2. DaraFrame对象 DataFrame将Series的使用场景由一维扩展到多维, ...
- ACC 001 C - Shorten Diameter 图论
题目: Problem Statement Given an undirected tree, let the distance between vertices \(u\) and \(v\) be ...
- 利用PIL添加水印
转:http://www.jb51.net/article/66542.htm
- 六、python沉淀之路--int str list tuple dict 重点总结
一.数字int(..)二.字符串replace/find/join/strip/startswith/split/upper/lower/formattempalte = "i am {na ...
- pair对组
一.pair基本概念 对组(pair)将一对值组合成一个值,这一对值可以具有不同的数据类型,两个值可以分别用pair的两个公有函数first和second访问. 类模板:template <cl ...
- VS中添加自定义代码片段
前言 用#4敲出 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; int main(voi ...