1 回答

TA貢獻(xiàn)1874條經(jīng)驗 獲得超12個贊
如果您愿意將 product_id 作為密鑰,那么您可以這樣做:
$a = [
0 => [
"product_id" => "a",
"quantity_1" => "1"
],
1 => [
"product_id" => "b",
"quantity_1" => "2"
],
2 => [
"product_id" => "c",
"quantity_1" => "1"
]
];
$b = [
0 => [
"product_id" => "a",
"quantity_2" => "1"
],
1 => [
"product_id" => "d",
"quantity_2" => "2"
]
];
print_r(
array_replace_recursive(
array_column($a, null, 'product_id'),
array_column($b, null, 'product_id')
)
);
輸出
Array
(
[a] => Array
(
[product_id] => a
[quantity_1] => 1
[quantity_2] => 1
)
[b] => Array
(
[product_id] => b
[quantity_1] => 2
)
[c] => Array
(
[product_id] => c
[quantity_1] => 1
)
[d] => Array
(
[product_id] => d
[quantity_2] => 2
)
)
沙盒
您可以隨時從結(jié)果中刪除密鑰,array_values如下所示:
print_r(
array_values(
array_replace_recursive(
array_column($a, null, 'product_id'),
array_column($b, null, 'product_id')
)
)
);
-注意- product_ids 在每個數(shù)組中必須是唯一的,這樣才能工作。否則,您可以簡單地使用 foreach 循環(huán)來完成。
$c = [];
foreach(array_merge($a,$b) as $v){
$k = $v['product_id'];
if(!isset($c[$k])){
$c[$k] = $v;
}else{
$c[$k] = array_merge($c[$k],$v);
}
}
print_r($c);
沙盒
我會發(fā)布輸出,但它是相同的:) - 這就是重點。此外,我更喜歡盡可能少地引用這些鍵。它可以使維護(hù)代碼更容易一些。
- 1 回答
- 0 關(guān)注
- 183 瀏覽
添加回答
舉報