我有问题确切了解array_splice和array_slice的作用。据我所知,array_splice应该返回一个数组,取出某些元素后,array_slice应该检索一个数组的切片。
php.net/array_splice手册中的以下代码显示此代码应该有效。
$input = array("red", "green", "blue", "yellow");
var_dump(array_splice($input, 2));
// $input is now array("red", "green")
$input = array("red", "green", "blue", "yellow");
var_dump(array_slice($input, 2));
// $input is now array("red", "green")
然而,当我在php 5.3.4和5.1.6上运行此代码时,结果是
array
0 => string 'blue' (length=4)
1 => string 'yellow' (length=6)
array
0 => string 'blue' (length=4)
1 => string 'yellow' (length=6)
我误解了手册还是这个错误?在我看来,array_splice就像array_slice
一样此外,它似乎没有替换
$input = array("red", "green", "blue", "yellow");
var_dump(array_splice($input, 2, 2, array('foo')));
输出
array
0 => string 'blue' (length=4)
1 => string 'yellow' (length=6)
有人可以确认这是一个错误,如果没有解释这应该如何工作?
编辑:
Nvm我明白了。我没有在array_splice上使用var_dump,而是使用$ input作为array_splice更改$ input而不是返回新值。
array_slice返回值,而array_splice将值设置为$ input。
MOD请关闭或删除此内容。
答案 0 :(得分:8)
来自the docs:
<强>描述强>
array array_splice(array&amp; $ input,int $ offset [,int $ length = 0 [,mixed $ replacement]])从输入数组中删除由offset和length指定的元素,并将其替换为替换数组的元素(如果提供)。
...
返回值
返回由提取的元素组成的数组。
你只是可怕,非常困惑。
答案 1 :(得分:3)
splice删除数组元素的子集,并在其位置插入新元素,基本上替换它们。 slice只是将数组元素的子集拉入一个单独的数组中。
你误解的地方是slice的结果作为一个单独的数组从函数返回,其中splice实际操作作为参数传入的数组。
答案 2 :(得分:0)
在您的第一个代码示例中,评论指出变量$input
中剩下的内容是array("red", "green")
,但未提及var_dump
返回的内容,这是您的试用版返回的内容