Я хотел бы вставить два массива после того, как конкретный индекс соответствует условию в многомерном массиве в то время как в 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;