php - 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.
}
解决方案
您可以在循环之前声明一个空数组,然后通过原始数组、其项目的属性和循环foreach
来填充它:number
for
$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.
)
);
}
在这里测试一下。
推荐阅读
- python-3.x - 如何用新的填充张量就地替换 torch.tensor?
- r - 更改 R 中的绘图位置
- sql - SQL Server 累计发票金额
- c++ - 删除外部终端 vscode C++ 中的编译器信息
- reactjs - 渲染中的 if else 语句?
- apache-spark - Spark结构化流媒体作业卡了几个小时而没有被杀死
- django - 如何使用 DRY 方法在一页上处理多个表单
- nightwatch.js - 如何在 Nightwatch.js 中断言 .containsText 不区分大小写?
- javascript - 如何检测 ES Module 是否是主模块?
- python - python if else语句中的麻烦与多个变量