【发布时间】:2015-11-18 04:39:56
【问题描述】:
我有以下3个多维数组:
Array
(
[0] => Array
(
[id_produto] => 191
[categoria] => 7
[prazo] => 8
[desconto] => 45
)
[1] => Array
(
[id_produto] => 194
[categoria] => 7
[prazo] => 8
[desconto] => 39
)
[2] => Array
(
[id_produto] => 195
[categoria] => 7
[prazo] => 8
[desconto] => 39
)
Array
(
[0] => Array
(
[id_produto] => 191
[categoria] => 7
[pageviews] => 2103
)
[1] => Array
(
[id_produto] => 194
[categoria] => 7
[pageviews] => 2445
)
[2] => Array
(
[id_produto] => 195
[categoria] => 7
[pageviews] => 1560
)
Array
(
[0] => Array
(
[id_produto] => 191
[categoria] => 7
[pedidos] => 3
[valor] => 6501.583023
)
[1] => Array
(
[id_produto] => 194
[categoria] => 7
[pedidos] => 1
[valor] => 2217.968420
)
[2] => Array
(
[id_produto] => 197
[categoria] => 7
[pedidos] => 2
[valor] => 4405.517706
)
我想将它们结合起来,保留键 'id_produto' 和 'categoria' 并有类似的东西:
Array
(
[0] => Array
(
[id_produto] => 191
[categoria] => 7
[prazo] => 8
[desconto] => 45
[pageviews] => 2103
[pedidos] => 3
[valor] => 6501.583023
)
[1] => Array
(
[id_produto] => 194
[categoria] => 7
[prazo] => 8
[desconto] => 39
[pageviews] => 2445
[pedidos] => 1
[valor] => 2217.968420
)
[2] => Array
(
[id_produto] => 195
[categoria] => 7
[prazo] => 8
[desconto] => 39
[pageviews] => 1560
[pedidos] => 2
[valor] => 4405.517706
)
我尝试了array_merge($array1,$array2,$array3) 和array_merge_recursive($array1,$array2,$array3),但它确实将它们复制到一个包含 9 个元素的数组中。以下代码对我有用,但我正在寻找更快的解决方案,因为我有数千个 ID:
foreach($array1 as $arr1=>$a){
foreach($array2 as $arr2=>$b){
if($a['id_produto'] == $b['id_produto']){
$array1[$arr1]['pageviews'] = $b['pageviews'];
}
}
foreach($array3 as $arr3=>$c){
if($a['id_produto'] == $c['id_produto']){
$array1[$arr1]['pedidos'] = $c['pedidos'];
$array1[$arr1]['valor'] = $c['valor'];
}
}
}
【问题讨论】:
-
您确定所有 3 个数组的顺序相同吗?同上显示您尝试过的代码,即使它不起作用!
-
我编辑了我的问题。我基本上尝试像在其他问题中发现的那样应用 array_merge,但没有运气。也许还有另一个 php 函数可以处理这个问题。我可以尝试的一件事是遍历它们,但这是我最后的手段。
-
我可以订购它们,但不能保证所有 id 都在所有 3 个数组中
标签: php arrays multidimensional-array merge grouping