我需要使用两个数组 - 初始数组和没有第一个元素的相同数组。例如:
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)......这里有什么问题?
答案 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
}