在多维 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;
我想在 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;