Array_Shift函数 - 参数不是通过引用

时间:2014-07-19 20:32:16

标签: php

我需要使用两个数组 - 初始数组和没有第一个元素的相同数组。例如:

public function foobar($a, $b, $c)
{
   $initial_array = get_defined_var();
   var_dump($initial_array); // ok
   $sliced_array = array_shift($initial_array);
   var_dump($sliced_array); // int(1) ???

   //initial array should be 'a' => $a, 'b' => $b, 'c' => $c
   // sliced array should be 'b' => $b, 'c' => $c
}

问题是切片数组似乎是一些奇怪的值,比如int(1)......这里有什么问题?

3 个答案:

答案 0 :(得分:4)

您可以尝试使用array_slice

$sliced_array = array_slice($initial_array, 1);

答案 1 :(得分:0)

array_shift修改原始数组,并返回移位元素,在这种情况下是$ a = 1的值。

答案 2 :(得分:0)

array_shift通过删除它的第一个元素来修改它接收的数组(而不是返回它接收的数组的副本)

如果您想要删除第一个元素的initial_array副本,请尝试使用

public function foobar($a, $b, $c)
{
   $initial_array = get_defined_var();      
   $sliced_array = $initial_array; //copy the array
   array_shift($sliced_array); //remove 1st element
}