如何使用阵列切片和拼接来替换阵列元素


how to replace the array elements using array slice and splice?

为什么我不能用我的这个简单代码片段替换数组元素?

<?php
$input = array("a", "b", "c", "d", "e");
$replace = array_slice($input, -2, 2,true);

echo "<pre>",print_r(array_splice($input, 0, 2,$replace)),"</pre>";
?>

输出就像这个

Array
(
    [0] => a
    [1] => b
)
1

我希望是

Array
(
    [3] => d
    [4] => e
)
1

根据PHP的array_splice:文档

返回由提取的元素组成的数组。

您正在尝试打印通过拼接删除的元素,这些元素是从索引0开始的2个元素,因此是ab

array_splice修改了原始数组,因此您需要打印它。。。

只需执行:

$input = array("a", "b", "c", "d", "e");
$result = array_slice($input, -2, 2, TRUE);
var_dump($result);

已经足够了(演示):

array(2) {
  [3]=>
  string(1) "d"
  [4]=>
  string(1) "e"
}

array_slice对数组的作用类似于substr对字符串的作用。

$input = array("a", "b", "c", "d", "e");
$replace = array_slice($input, -2, 2,true);
array_splice($input, 0, 2,$replace);
echo "<pre>";
print_r($input);
echo "</pre>";

这是因为原始数组被修改了,所以不能打印slice函数的返回值。