在 php 中快速获取数组偏移量的好方法
Less bad way to shortly getting an array offset in php
上下文
在 php 中,我们访问(与许多其他语言一样)数组元素(或字符串,当需要一个字符时)
通过使用方括号语法 [] 定位它们的偏移量
或一些本机函数,如 array_push、array_pop...等
实际上,当我需要编写更短的代码时,我是这样进行的:
这里只需要第一个偏移
$b = explode('_', $a)[0];
它有效,但我一直想知道它是否会影响性能或者它在道德上是否正确。
我没有找到(或搜索不当?),重复 post 列表,然后
我试着坐在替补席上分析行为。 link 到 my bench
我不知道我这个长凳的编码是否正确,但它看起来是:
静态访问花费更少的时间(时间减少一半)和最便宜的内存,
嗯,这是最便宜的内存,只有当我增加工作台的迭代次数时……我不太确定。
从逻辑上讲,array_shift 应该遵循以下路径,访问第一个项目,缩小内存以进行移位,或者只是更改项目指针地址?
在您看来,最不坏的方法是什么?
方法 0
$b = explode('_', $a)[0];
方法一
$b = array_shift(explode('_', $a));
方法二
$b = explode('_', $a);
$b = array_shift($a);
如果我们讨论获取数组偏移量:
- 访问第一个元素:
array_shift(explode('_', $a))
当然会比
更慢更耗内存
explode('_', $a)[0]
因为array_shift函数从数组中提取第一个元素并来到重新索引所有其他元素。
如果您对索引数组的性能感兴趣,请考虑 SplFixedArray
,因为它节省了大约 60% 内存。
上下文
在 php 中,我们访问(与许多其他语言一样)数组元素(或字符串,当需要一个字符时) 通过使用方括号语法 [] 定位它们的偏移量 或一些本机函数,如 array_push、array_pop...等
实际上,当我需要编写更短的代码时,我是这样进行的:
这里只需要第一个偏移
$b = explode('_', $a)[0];
它有效,但我一直想知道它是否会影响性能或者它在道德上是否正确。 我没有找到(或搜索不当?),重复 post 列表,然后 我试着坐在替补席上分析行为。 link 到 my bench
我不知道我这个长凳的编码是否正确,但它看起来是: 静态访问花费更少的时间(时间减少一半)和最便宜的内存, 嗯,这是最便宜的内存,只有当我增加工作台的迭代次数时……我不太确定。 从逻辑上讲,array_shift 应该遵循以下路径,访问第一个项目,缩小内存以进行移位,或者只是更改项目指针地址?
在您看来,最不坏的方法是什么?
方法 0
$b = explode('_', $a)[0];
方法一
$b = array_shift(explode('_', $a));
方法二
$b = explode('_', $a);
$b = array_shift($a);
如果我们讨论获取数组偏移量:
- 访问第一个元素:
array_shift(explode('_', $a))
当然会比
更慢更耗内存explode('_', $a)[0]
因为array_shift函数从数组中提取第一个元素并来到重新索引所有其他元素。
如果您对索引数组的性能感兴趣,请考虑 SplFixedArray
,因为它节省了大约 60% 内存。