ken*_*in9 6 php arrays collections array-merge laravel
我有两个具有id键的数组数组,我想根据该数组的键和键值将数据合并在一起.数据看起来像:
$color = [
['id' => 1, 'color' => 'red'],
['id' => 2, 'color' => 'green'],
['id' => 3, 'color' => 'blue'],
];
$size = [
['id' => 1, 'size' => 'SM'],
['id' => 2, 'size' => 'XL'],
['id' => 3, 'size' => 'MD'],
['id' => 4, 'size' => 'LG'],
];
$combined = [
['id' => 1, 'color' => 'red', 'size' => 'SM'],
['id' => 2, 'color' => 'green', 'size' => 'XL'],
['id' => 3, 'color' => 'blue', 'size' => 'MD'],
['id' => 4, 'size' => 'LG'],
];
Run Code Online (Sandbox Code Playgroud)
是否有一个特别有效的功能或技巧来处理这样的事情?或者我应该循环遍历一个数组的元素并将内容推送到另一个数组?
我也使用Laravel,数据是一个雄辩的查询的结果,所以我也可以利用这些集合,如果它会使代码更清晰.
使用array_replace_recursive函数可以轻松快捷地完成
array_replace_recursive($color, $size)
Run Code Online (Sandbox Code Playgroud)
您可以array_replace_recursive根据具体情况使用合并数组。
$color = array(
array('id' => 1, 'color' => 'red'),
array('id' => 2, 'color' => 'green'),
array('id' => 3, 'color' => 'blue'),
);
$size = array(
array('id' => 1, 'size' => 'SM'),
array('id' => 2, 'size' => 'XL'),
array('id' => 3, 'size' => 'MD'),
array('id' => 4, 'size' => 'LG'),
);
$merged = array_replace_recursive($color, $size);
Run Code Online (Sandbox Code Playgroud)
输出:
array(4) {
[0]=>
array(3) {
["id"]=>
int(1)
["color"]=>
string(3) "red"
["size"]=>
string(2) "SM"
}
[1]=>
array(3) {
["id"]=>
int(2)
["color"]=>
string(5) "green"
["size"]=>
string(2) "XL"
}
[2]=>
array(3) {
["id"]=>
int(3)
["color"]=>
string(4) "blue"
["size"]=>
string(2) "MD"
}
[3]=>
array(2) {
["id"]=>
int(4)
["size"]=>
string(2) "LG"
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我使用传统的数组布局,因为我的 PHP 版本尚不支持新的数组布局:)
您也可以使用array_map. 这将允许您通过一些调整来添加任意数量的数组。
$merged = array_map(function ($c, $s) {
return array_merge($c, $s);
}, $color, $size);
var_dump($merged); // See output above
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2168 次 |
| 最近记录: |