【问题标题】:Insert two items after a particular index of a multidimensional PHP array and remove array at existing index在多维 PHP 数组的特定索引后插入两项并删除现有索引处的数组
【发布时间】:2017-04-03 21:05:20
【问题描述】:

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

【问题讨论】:

标签: php arrays array-splice


【解决方案1】:

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

【讨论】:

  • 实际数组有 100 多个数组,我只在找到特定匹配项时替换索引。我试图简化代码以获得答案,而不会给手头的问题增加不必要的复杂性。
  • 您说的是“特定索引”,所以这就是我的回答。如果您想修改您的问题,请这样做。它还可能有助于显示您为解决问题所做的尝试以及错误的地方。
  • 我也说过“while in a loop”
  • 我很抱歉。 array_splice() 不起作用。我会让原来的问题更彻底。
  • 您在迭代数组时会遇到问题,我不建议这样做。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 2015-08-11
    相关资源
    最近更新 更多