在 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% 内存。