PHP源码之explode分析

网络整理 - 08-04

     最近一直在想有关字符串操作的一些效率上的事情,截取字串的问题,都会避免不了重新分配空间的消耗,也顺带看了explode这个函数的源码,理解下,拿出自己的分析共享下^_^。

      当我们需要将一个数组根据某个字符或字串进行分割成数组的时候,explode用的很happy,但是你知道~explode是怎么工作的么~~

      首先可以肯定的是,explode也是会分配空间的,毫无疑问。

     

char
10
14
19
22
30

constcharcharchar

      下面根据explode的第三个参数limit来分析调用:条件对应的是explode中最后的三行,对limit条件的不同

注: limit在缺省的时候(没有传递),他的默认值是LONG_MAX,也就是属于分支1的情况

char

char
char

char

可见(不包含分配空间这些),

当limit>1的时候,效率是O(N)【N为limit值】,

当limit<0的时候,效率是O(N+M)【N为limit值, M 为分割符出现次数】,

当limit=1 or  limit=0 的时候, 效率是O(1)