在多维 PHP 数组的特定索引后插入两项并删除现有索引处的数组

Insert two items after a particular index of a multidimensional PHP array and remove array at existing index

我想在 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() 但是因为它增加了匹配中现有数组的长度,所以它最终会覆盖新的数组元素循环也是如此。

为此使用 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);

我通过以下更改使其工作:

$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;