PHP array_splice函数使用疑问:如何替换指定偏移量后的数组元素
解决PHP array_splice 替换数组指定位置后元素的问题
我完全懂你为啥困惑啦,咱们先把array_splice的参数逻辑掰明白——你之前的用法问题出在**第三个参数($length)**的设置上。
先理清楚array_splice的核心参数含义:
array_splice(array &$array, int $offset, ?int $length = null, mixed $replacement = [])
$offset:操作的起始索引(你选的2是对的,对应原数组里元素3的位置)$length:要删除的元素个数。你之前设为0,这代表只插入新元素、不删除任何旧元素,所以会得到[1,2,0,0,3,4,5,6],这显然不是你想要的;如果把它设为null或者一个大于等于从$offset到数组末尾元素总数的值,就会删除从$offset开始的所有剩余元素。$replacement:用来替换删除部分的数组(你的$t2是完全正确的)
你想要保留前2个元素(1,2),把从索引2开始的所有元素替换成[0,0],正确写法应该是这样:
$t = array(1,2,3,4,5,6); $t2 = array(0,0); // 从索引2开始,删除后面所有元素,同时插入$t2 array_splice($t, 2, null, $t2); print_r($t); // 输出:Array ( [0] => 1 [1] => 2 [2] => 0 [3] => 0 )
或者你也可以明确计算要删除的元素个数(原数组总长度减去起始索引),效果完全一致:
array_splice($t, 2, count($t)-2, $t2);
这样就能得到你想要的[1,2,0,0]啦。
内容的提问来源于stack exchange,提问作者user8238012
相关产品推荐
相关产品推荐

