你会使用哪一个?
基本上我只想从数组中获取第一个元素,就是这样。
答案 0 :(得分:14)
嗯,他们做了不同的事情。
array_shift($arr)
从数组中取出第一个元素,并将其提供给您。
$arr[0]
只是给你... 如果数组有数字键。
适用于关联数组的替代方法是reset($arr)
。这确实会移动数组的内部指针,但除非你使用这些函数,否则这不会影响你。
答案 1 :(得分:13)
array_shift
实际上会从数组中删除指定的值。除非你真的想减少阵列,否则不要使用它!
答案 2 :(得分:6)
您将使用$arr[ 0 ];
array_shift
删除数组中的第一个元素。
这个答案实际上介于不完整和明显错误之间,但是,因为两个jon
的评论,我认为它应该保持正常,以便其他人可以看到这种话语。
正确答案:
reset
是返回数组的第一个定义索引的方法。即使在非关联数组中,也可能不是0
索引。array_shift
将删除并返回reset
OP假设$arr[0]
是第一个在该特定背景下不准确的索引。
答案 3 :(得分:4)
$arr[0]
仅在数组为数字键时有效。
array_shift
从数组中删除元素,它会修改数组本身。
如果您不确定第一个键是什么,并且您不想将其从阵列中删除,则可以使用:
<?php
foreach($arr $k=>$v){
$value = $v;
break;
}
甚至更好:
<?php
reset($arr);
$value = current($arr);
答案 4 :(得分:2)
如果你有一个关联数组,你也可以使用reset($arr)
:它返回第一个元素(不删除),并将数组指针设置为这个元素。
但最快的方式是$arr[0]
。
答案 5 :(得分:1)
您是否也要修改arr
数组? array_shift
删除数组的第一个元素并返回它,因此数组已更改。 $arr[0]
只是给你第一个元素。
除非我明确想要修改数组,否则我会使用$arr[0]
。您可以稍后添加代码以使用arr
数组,并忘记它已被修改。
答案 6 :(得分:1)
根据你的需要,$ arr [0]是可取的,因为它更快。 array_shift用于其他情况。
答案 7 :(得分:1)
arrshift更可靠,并且总是会返回数组中的第一个元素,但这也会通过删除该元素来修改数组。
如果您的数组不是从0索引处开始,arr [0]将失败,但是单独保留数组本身。
更复杂但更可靠的方法是:
$keys = array_keys($arr);
$first = $arr[$keys[0]];
答案 8 :(得分:1)
如果你想要数组的第一个元素,请使用$ arr [0]形式。优点 - 简单性,可读性和可维护性。保持直截了当。
编辑:仅当您知道数组具有从0开始的默认键时才使用索引0。
答案 9 :(得分:1)
你有两个操作:
如果按索引访问,实际上只有一个操作。
答案 10 :(得分:1)
如果您不想更改有问题的数组,请使用$arr[0]
(仅获取第一个元素),否则如果要从{{1}中删除$arr
的第一个元素},使用$arr
。
例如:
array_shift($arr)
ETA:正如其他人所指出的,请确保您的数组不是关联数组(即键是0,1,...,$arr=array(3,-6,2);
$foo=$arr[0]; //$foo==3 and $arr==array(3,-6,2).
$bar=array_shift($arr); //$bar==3 and $arr==array(-6,2).
),否则这可能不起作用。