Php 如何将第一个数组与第二个数组合并并覆盖?

Php 如何将第一个数组与第二个数组合并并覆盖?,php,Php,下面是两个数组- $a1 = json_decode('[{"id":1,"name":"view_users","checked":false},{"id":2,"name":"add_users","checked":false},{"id":3,"name":"edit_users&

下面是两个数组-

$a1 = json_decode('[{"id":1,"name":"view_users","checked":false},{"id":2,"name":"add_users","checked":false},{"id":3,"name":"edit_users","checked":false},{"id":4,"name":"delete_users","checked":false},{"id":5,"name":"view_coupons","checked":false},{"id":6,"name":"add_coupons","checked":false},{"id":7,"name":"edit_coupons","checked":false},{"id":8,"name":"delete_coupons","checked":false},{"id":9,"name":"view_roles","checked":false},{"id":10,"name":"add_roles","checked":false},{"id":11,"name":"edit_roles","checked":false},{"id":12,"name":"delete_roles","checked":false},{"id":13,"name":"view_payment_requests","checked":false},{"id":14,"name":"add_payment_requests","checked":false},{"id":15,"name":"edit_payment_requests","checked":false},{"id":16,"name":"delete_payment_requests","checked":false},{"id":17,"name":"view_requests_orders","checked":false},{"id":18,"name":"add_requests_orders","checked":false},{"id":19,"name":"edit_requests_orders","checked":false},{"id":20,"name":"delete_requests_orders","checked":false}]', true);

$a2 = json_decode('[{"id":2,"name":"add_users","checked":true},{"id":4,"name":"delete_users","checked":true},{"id":5,"name":"view_coupons","checked":true},{"id":6,"name":"add_coupons","checked":true},{"id":12,"name":"delete_roles","checked":true}]', true); 
我希望它在合并和覆盖后如下所示-

$final_output = json_decode('[{id: 1, name: "view_users", checked: false}, {id: 2, name: "add_users", checked: true}, {id: 3, name: "edit_users", checked: false}, {id: 4, name: "delete_users", checked: true}, {id: 5, name: "view_coupons", checked: true}, {id: 6, name: "add_coupons", checked: true}, {id: 7, name: "edit_coupons", checked: false}, {id: 8, name: "delete_coupons", checked: false}, {id: 9, name: "view_roles", checked: false}, {id: 10, name: "add_roles", checked: false}, {id: 11, name: "edit_roles", checked: false}, {id: 12, name: "delete_roles", checked: true}, {id: 13, name: "view_payment_requests", checked: false}, {id: 14, name: "add_payment_requests", checked: false}, {id: 15, name: "edit_payment_requests", checked: false}, {id: 16, name: "delete_payment_requests", checked: false}, {id: 17, name: "view_requests_orders", checked: false}, {id: 18, name: "add_requests_orders", checked: false}, {id: 19, name: "edit_requests_orders", checked: false}, {id: 20, name: "delete_requests_orders", checked: false}]', true)
我尝试使用以下php方法来实现这一点,但没有得到正确的结果

$merged1 = array_merge($a1, $a2);
$merged2 = array_merge_recursive($a1, $a2);
$merged3 = array_replace($a1, $a2);
$merged4 = array_replace_recursive($a1, $a2);
上述方法都不会产生最终输出。
我不知道这里出了什么问题。请建议我,我如何才能得到最终的输出。谢谢您的时间。

您需要注意保留元件的实际位置

<?php
$aIn = [
  json_decode('[{"id":1,"name":"view_users","checked":false},{"id":2,"name":"add_users","checked":false},{"id":3,"name":"edit_users","checked":false},{"id":4,"name":"delete_users","checked":false},{"id":5,"name":"view_coupons","checked":false},{"id":6,"name":"add_coupon
  json_decode('[{"id":2,"name":"add_users","checked":true},{"id":4,"name":"delete_users","checked":true},{"id":5,"name":"view_coupons","checked":true},{"id":6,"name":"add_coupons","checked":true},{"id":12,"name":"delete_roles","checked":true}]', true)
];

$aOut = [];
foreach($aIn as $aX) {
  array_walk($aX, function($entry) use (&$aOut) {
    $aOut[$entry['id']] = $entry;
  });
}

print_r(json_encode(array_values($aOut)));

我不明白你想如何实现你的建议。。。以ID为1的元素为例:在输入中,它的属性“checked”设置为FALSE,在建议的结果中,它应该突然为TRUE。怎么会这样?@arkascha我在提问时犯了个错误!我已经更正了
$final\u输出
。您能帮我一下吗?如何实现
$final_输出
[{"id":1,"name":"view_users","checked":false},{"id":2,"name":"add_users","checked":true},{"id":3,"name":"edit_users","checked":false},{"id":4,"name":"delete_users","checked":true},{"id":5,"name":"view_coupons","checked":true},{"id":6,"name":"add_coupons","checked":true},{"id":7,"name":"edit_coupons","checked":false},{"id":8,"name":"delete_coupons","checked":false},{"id":9,"name":"view_roles","checked":false},{"id":10,"name":"add_roles","checked":false},{"id":11,"name":"edit_roles","checked":false},{"id":12,"name":"delete_roles","checked":true},{"id":13,"name":"view_payment_requests","checked":false},{"id":14,"name":"add_payment_requests","checked":false},{"id":15,"name":"edit_payment_requests","checked":false},{"id":16,"name":"delete_payment_requests","checked":false},{"id":17,"name":"view_requests_orders","checked":false},{"id":18,"name":"add_requests_orders","checked":false},{"id":19,"name":"edit_requests_orders","checked":false},{"id":20,"name":"delete_requests_orders","checked":false}]