我想根据公共列值合并两个数组。这是我的 2 个数组:
$array1 = [ [ "total_process_per_category" => "6", "category_id" => "1" ], [ "total_process_per_category" => "2", "category_id" => "2" ] ]; $array2 = [ [ "total_pinned_per_category" => "16", "category_id" => "1" ], [ "total_pinned_per_category" => "4", "category_id" => "2" ] ];
我想合并这些数组以获得:
array ( 0 => array ( 'total_process_per_category' => '6', 'total_pinned_per_category' => '16', 'category_id' => '1', ), 1 => array ( 'total_process_per_category' => '2', 'total_pinned_per_category' => '4', 'category_id' => '2', ), )
如您所见,这两个数组具有相同的键 ['category_id'] 和相同的值。
我想要得到一个结果,其中 ['total_process_per_category'] 和 ['total_pinned_per_category'] 根据它们的 ['category_id'] 值一起放置在同一数组上。
我使用嵌套的 foreach 得到了这个,但它看起来很丑。请告诉我更好的方法。
这可以在没有“丑陋的嵌套 foreach”的情况下完成。在迭代之前合并两个数组,按category_id 值进行分组。循环结束后,使用 array_values() 清除临时的一级键。
代码:(演示) (array_reduce() 版本)
输出:
你可以尝试
array_reduce
: