是否有一个PHP函数可以'弹出'数组的第一个元素?
array_pop()
弹出最后一个元素,但我想弹出第一个元素。
答案 0 :(得分:69)
您正在寻找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
就位。因此需要更长的时间。