我希望在特定索引与多foreach
循环中的条件匹配后插入两个数组,并删除该索引处的现有数组
示例数组:
$array = array(
array( 1, 2, 3 ),
array( 4, 5, 6 ),
array( 7, 8, 9 )
);
插入和删除现有索引数组后
$array = array(
array( 1, 2, 3 ),
array( 'new', 'array' ),
array( 'another', 'item' ),
array( 7, 8, 9 )
);
在满足条件的循环中,所以:
foreach ( $array as $index => $value ) :
if ( $index % 2 == 0 ) :
// insert two array elements in $array after index $index and remove $index
endif;
endforeach;
感谢任何帮助。
更新
我已经尝试了 array_splice()但是因为它增加了匹配时现有数组的长度,所以它最终也会覆盖循环中的新数组元素。
答案 0 :(得分:2)
使用foreach
循环会造成浪费。只需使用array_splice()
代替:
<?php
$array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
$replacement = [['new', 'array'], ['another', 'item']];
$target = 1;
array_splice($array, $target, 1, $replacement);
print_r($array);
根据您的修改,您可能需要尝试此操作:
<?php
$array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
$replacement = [['new', 'array'], ['another', 'item']];
$new = [];
foreach ($array as $k=>$v) {
if ($k % 2 == 0) {
foreach($replacement as $r) {
$new[] = $r;
}
} else {
$new[] = $v;
}
}
print_r($new);
答案 1 :(得分:1)
我通过以下更改得到了它:
$array = array(
array( 1, 2, 3 ),
array( 4, 5, 6 ),
array( 7, 8, 9 )
);
$new_array = array();
foreach ( $array as $index => $value ) {
if ( $index % 2 == 0 ) {
array_push( $new_array, array( 'new', 'array' ) );
array_push( $new_array, array( 'another', 'array' ) );
continue;
}
array_push( $new_array, $array[ $index ] );
}
$array = $new_array;