如何在PHP中基于一个键合并两个JSON数组
我有两个数组如何在PHP中基于一个键合并两个JSON数组,php,arrays,Php,Arrays,我有两个数组 array1 = array( {'id' => '1', 'name' => 'A'}, {'id' => '2', 'name' => 'B'}, {'id' => '3', 'name' => 'C'}, {'id' => '4', 'name' => 'D'} ); array2 = array( {'id' => '1', 'flag' => '1'}, {'id' => '3',
array1 = array(
{'id' => '1', 'name' => 'A'},
{'id' => '2', 'name' => 'B'},
{'id' => '3', 'name' => 'C'},
{'id' => '4', 'name' => 'D'}
);
array2 = array(
{'id' => '1', 'flag' => '1'},
{'id' => '3', 'flag' => '0'}
);
我需要根据'id'键合并它们,因此结果应该是
array1 = array(
{'id' => '1', 'name' => 'A', 'flag' => '1'},
{'id' => '2', 'name' => 'B'},
{'id' => '3', 'name' => 'C', 'flag' => '0'},
{'id' => '4', 'name' => 'D'}
);
有什么帮助吗?我已经在这里回答了:检查这个:这个问题已经在那里得到了回答@NareshKumar.p我没有看到在任何地方提到JSON。除非OP明确提到,否则请不要编辑该问题。下面是一个解决方案,允许您根据规则将
$idKeyName
指定为第三个参数来合并两个数组。它可以是您的id
,但对其他人来说是hash
或timestamp
。
function merge_two_arrays($array1,$array2) {
$data = array();
$arrayAB = array_merge($array1,$array2);
foreach ($arrayAB as $value) {
$id = $value['id'];
if (!isset($data[$id])) {
$data[$id] = array();
}
$data[$id] = array_merge($data[$id],$value);
}
return $data;
}
$master_array = merge_two_arrays($array1,$array2);