我想从数据库中创建一个Excel导出文件。数据来自2个表:names
和numbers
,该names
表仅包含唯一的行,但numbers
可以有多个行。
如何将这两个数组合并为一个与示例数组相同的数组?
数组:
$names = array(
array(
"ID" => 1,
"Name" => "Test1"
),
array(
"ID" => 2,
"Name" => "Test2"
)
);
$numbers = array(
array(
"ID" => 1,
"Number" => "123"
),
array(
"ID" => 1,
"Number" => "223"
),
array(
"ID" => 2,
"Number" => "333"
)
);
数组示例:
$merged = array(
array(
"ID" => 1,
"Name" => "Test1",
"Number" => "123",
"Number" => "223"
),
array(
"ID" => 2,
"Name" => "Test2",
"Number" => "333"
)
);
一种简单的方法是使用两个循环。
$merge = [];
foreach($names as $value) {
$merge_sub = [];
$merge_sub[] = $value['ID'];
$merge_sub[] = $value['Name'];
foreach($numbers as $n) {
if($n['ID'] == $value['ID']) $merge_sub[] = $n['Number'];
}
$merge[] = $merge_sub;
}
请记住,这会在不添加键的情况下添加值,因为您不能拥有多个相同的键名,因为每次更改键都会覆盖使用相同名称插入的最后一个键。但这给您一个可以遵循的算法的想法。
虽然,您可以尝试使用相同的键,但是具有这样的索引:
$merge = [];
foreach($names as $value) {
$merge_sub = [];
$merge_sub['ID'] = $value['ID'];
$merge_sub['Name'] = $value['Name'];
$i = 0;
foreach($numbers as $n) {
if($n['ID'] == $value['ID']) $merge_sub['Number' . $i] = $n['Number'];
$i++;
}
$merge[] = $merge_sub;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句