在php中快速获取数组偏移量的一种不那么糟糕的方法

在php中快速获取数组偏移量的一种不那么糟糕的方法,php,arrays,memory-management,offset,Php,Arrays,Memory Management,Offset,上下文 在php中,我们访问数组(或字符串,当需要一个字符时)的元素(与许多其他语言一样) 通过使用方括号语法[]确定其偏移量 或者一些本机函数,如array\u push、array\u pop。。。等等 实际上,当我需要编写缩短的代码时,我会按照如下方式进行: 这里只需要第一个偏移量 $b = explode('_', $a)[0]; 这是可行的,但我一直想知道这是对性能的影响还是道德上的正确。 我还没有在重复的帖子列表中找到(或者搜索不好?) 我试着坐在板凳上分析这种行为。链接到 我不知

上下文

在php中,我们访问数组(或字符串,当需要一个字符时)的元素(与许多其他语言一样) 通过使用方括号语法[]确定其偏移量 或者一些本机函数,如array\u push、array\u pop。。。等等

实际上,当我需要编写缩短的代码时,我会按照如下方式进行:

这里只需要第一个偏移量

$b = explode('_', $a)[0];
这是可行的,但我一直想知道这是对性能的影响还是道德上的正确。 我还没有在重复的帖子列表中找到(或者搜索不好?) 我试着坐在板凳上分析这种行为。链接到

我不知道这张长椅的编码是否正确,但它似乎是: 静态访问需要更少的时间(减少一半的时间)和最便宜的内存, 嗯,这是最便宜的内存,只有当我增加了在工作台上的迭代次数。。。我什么都不太确定。 从逻辑上讲,数组_应该移动到下面的路径,访问第一个项,将内存缩小到移位,或者简单地更改项指针地址

根据你的说法,最不坏的方法是什么

方法0 方法1 方法2
如果我们讨论的是获取数组偏移量:
-要访问第一个元素:

array_shift(explode('_', $a))
当然,将比

explode('_', $a)[0]
因为数组\u shift函数从数组中提取第一个元素,然后对所有其他元素进行重新索引。

如果您感兴趣的是索引数组的性能,那么考虑<代码> SpRexEdEdgs<代码>,因为它节省了<强> 60% < /强>内存。

谢谢分享,从来没有听说过这个SPL类,非常好!好的,但接着是重叠移位(爆炸)(使用共享内存?或者它就像对每个变量进行变量化一样复杂?事实上,我没有完全理解你的最后一句话。你的意思是:“在获得初始数组的偏移量之前,我必须将其存储在其他变量中吗?”对不起,我的错。不完全是,我想我偶然发现了一个道德问题:在工作中,重写变量的初始化被视为犯罪……因此我的问题:)最后,我的方法\u 0不是一个坏的编程实践?方法\u 0很少使用,只是因为坚信“expode”函数的结果是100%的数组。在大多数情况下,它不是一个好的实践,因为我以前总是检查is\u数组,这不是一个坏的实践,而且速度更快:)谢谢你的意见,还有漂亮的spl课程!
$b = explode('_', $a);
$b = array_shift($a);
array_shift(explode('_', $a))
explode('_', $a)[0]