提问人:Gergely Lukacsy 提问时间:2/25/2020 最后编辑:JosephGergely Lukacsy 更新时间:2/25/2020 访问量:418
Array_slice() 在嵌套数组上无法按预期工作
Array_slice() doesn't work as expected on nested arrays
问:
因此,我正在设计一个可以通过扩展运算符(...$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()
答:
1赞
Alexandre Elshobokshy
2/25/2020
#1
它按预期工作。它返回数组的第一个元素,即键为 0 的数组,它本身包含一个数组,而不是第一个元素的内容。你只是误解了array_slice的实际工作方式。$arg
array (
0 =>
array (
0 => 'value1',
1 => 'value2',
2 => 'valueN',
),
)
评论
0赞
Gergely Lukacsy
2/25/2020
啊,我现在明白了,它总是返回一个数组。我不知道我在想什么......谢谢你的回答
2赞
Vaibhav Gidde
2/25/2020
#2
您需要从数组中获得第一个值。array_slice返回切片数组。您可以改用 array_shift,它将移出数组的第一个值并返回它。
print_r(array_shift($arg));
输出:
array (
0 => 'value1',
1 => 'value2',
2 => 'valueN',
)
评论
0赞
Gergely Lukacsy
2/26/2020
谢谢!使用也可以完成这项工作。current($arg)
评论