PHP - pop数组的第一个元素而不是last(reveresed array_pop)?

时间:2009-02-26 08:07:59

标签: php arrays pop

是否有一个PHP函数可以'弹出'数组的第一个元素?
array_pop()弹出最后一个元素,但我想弹出第一个元素。

4 个答案:

答案 0 :(得分:69)

您正在寻找array_shift()。

PHP Array Shift

答案 1 :(得分:33)

快速备忘单如果您不熟悉术语,可以使用以下备用术语的快速翻译,这可能更容易记住:

* array_unshift()  -  (aka Prepend ;; InsertBefore ;; InsertAtBegin )     
* array_shift()    -  (aka UnPrepend ;; RemoveBefore  ;; RemoveFromBegin )

* array_push()     -  (aka Append ;; InsertAfter ;; InsertAtEnd )     
* array_pop()      -  (aka UnAppend ;; RemoveAfter ;; RemoveFromEnd ) 

答案 2 :(得分:1)

对我来说array_slice()工作正常, 说:

$arr = array(1,2,3,4,5,6);
//array_slice($array,offset); where $array is the array to be sliced, and   offset is the number of array elements to be sliced
$arr2 = array_slice($arr,3);//or
$arr2 = array_slice($arr,-3);//or
$arr2 = array_slice($arr,-3,3);//return 4,5 and 6 in a new array
$arr2 = array_slice($arr,0,4);//returns 1,2,3 and 4 in a new array

答案 3 :(得分:1)

虽然array_shift()肯定是您问题的答案,但值得一提的是,在处理大型数组时,这可能是一个不必要的缓慢过程。 (或许多迭代)

检索第一个元素后,array_shift()重新索引数组中的所有数字键,以便以前位于[1]的元素变为[0],并且[10000]处的元素位于[9999] 1}}变为array_shift

数组越大,重新索引的键越多。如果你在大型数组上进行迭代,在多次迭代中调用 $array = array_reverse($array); $value = array_pop($array); ,性能上升可能会增加。

对于大型阵列的基准测试,反转阵列顺序并从末端弹出元素通常更便宜。

array_pop()

array_reverse()显然不需要重新索引,因为它从最后开始,而array_reverse($array, true)只需复制传递给它的数组,从后到前返回一个新数组。 key => value可用于在需要时保留array_reverse()对。

[编辑]我应该提一下,反向弹出方法的缺点是内存消耗,array_shift()生成一个新数组,MyRepository就位。因此需要更长的时间。