因此,我正在设计一个函数,该函数可以通过扩展运算符(...$arg
)接受多个参数
,但它也可以采用简单的输入数组。
我想使用array
方法访问array_slice()
的第一个元素,但是它不能按预期工作:
// This is what the spread argument passes into the function if it gets a single array
$arg = [
['value1', 'value2', 'valueN'],
];
// Accessing first element via array_slice:
var_export( array_slice($arg, 0, 1) );
预期结果:
array (
0 => 'value1',
1 => 'value2',
2 => 'valueN',
)
结果基本上等于输入数组:
array (
0 =>
array (
0 => 'value1',
1 => 'value2',
2 => 'valueN',
),
)
我知道我可以简单地访问0th
元素($arg[0]
)来获得第一项,但是我很好奇array_slice()
为什么不能按预期工作。我在这里想念什么?
答案 0 :(得分:2)
您期望数组中的第一个值。 array_slice返回切片的数组。您可以使用array_shift代替,它将数组的第一个值移开并返回。
print_r(array_shift($arg));
输出:
array (
0 => 'value1',
1 => 'value2',
2 => 'valueN',
)
答案 1 :(得分:1)
工作正常。它返回$arg
数组的第一个元素,该数组是键为0的数组本身包含一个数组,而不是第一个元素的内容。您只是误解了array_slice的实际工作原理。
array (
0 =>
array (
0 => 'value1',
1 => 'value2',
2 => 'valueN',
),
)