首页 > 解决方案 > PHP在for循环中复制x个数组元素

问题描述

可能有很多数组问题。但我找不到能回答这个特定问题的人:

作为数据库查询的结果,我有一个关联数组。我用 foreach 循环遍历它。其中一列包含一个数字。如果该数字大于 1,我必须将该行复制 x 次,以便该数组将具有 x 类似的行。

我想知道如何做到这一点?

foreach( $db_rows as $key => $value )
{  
  if( $value["number"] > 1 )
  //DUPLICATE $value and insert x number of times into $db_rows directly after $key.  
}

标签: phparrays

解决方案


您可以在循环之前声明一个空数组,然后通过原始数组、其项目的属性和循环foreach来填充它:numberfor

$clone_db_rows = [];

foreach( $db_rows as $key => $value )
{  
    for ($i = 0; $i < $value['number']; $i++) {
        $clone_db_rows[] = $value;
    }
}

在这里测试一下。


@Andreas建议使用array_fill来避免嵌套for语句。

他是对的,您可以通过以下方式执行此操作array_merge

$clone_db_rows = [];

foreach( $db_rows as $key => $value )
{  
    $clone_db_rows = array_merge(
        $clone_db_rows,            // Merge the current array with... 
        array_fill(                // ...a newly created one containing...
            0,
            $value['number'],      // ... X items equals to...
            $value                 // ... $value.
        )
    );
}

在这里测试一下。


推荐阅读