数组:array_shift($ arr)或$ arr [0]?

时间:2011-06-29 20:04:20

标签: php arrays

你会使用哪一个?

基本上我只想从数组中获取第一个元素,就是这样。

11 个答案:

答案 0 :(得分:14)

嗯,他们做了不同的事情。

  • array_shift($arr)从数组中取出第一个元素,并将其提供给您。

  • $arr[0]只是给你... 如果数组有数字键。

适用于关联数组的替代方法是reset($arr)。这确实会移动数组的内部指针,但除非你使用这些函数,否则这不会影响你。

答案 1 :(得分:13)

array_shift实际上会从数组中删除指定的值。除非你真的想减少阵列,否则不要使用它!

见这里:http://php.net/manual/en/function.array-shift.php

答案 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)

使用array_shift

你有两个操作:

  1. 检索第一个元素
  2. 移动阵列
  3. 如果按索引访问,实际上只有一个操作。

答案 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). ),否则这可能不起作用。