通过匹配键组合2个数组

时间:2019-01-15 08:49:35

标签: php arrays json array-merge

我已经按照PHP this answer中提供的步骤进行操作。

但是,我想通过以下方式在array_answer中添加项目:

[
{
    "id": "4c42ff61-148c-11e9-b673-005056be36b2",
    "answer": "1",
    "id_question": "11",
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
},
{
    "id": "59a09a34-148c-11e9-b673-005056be36b2",
    "answer": "3",
    "id_question": "12",
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
},
{
    "id": "66774e30-148c-11e9-b673-005056be36b2",
    "answer": "3",
    "id_question": "14",
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
},
{
    "id": "9469c0e4-148c-11e9-b673-005056be36b2",
    "answer": "1",
    "id_question": "10",
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
}
]

array_question是:

[
{
    "id": "10",
    "question": "Shop sign/billboard"
},
{
    "id": "11",
    "question": "Pylon"
},
{
    "id": "12",
    "question": "Banner"
},
{
    "id": "13",
    "question": "Sport"
},
{
    "id": "14",
    "question": "Matic"
},
{
    "id": "16",
    "question": "Cub"
}
]

结果(array_result)为:

[
{
    "id": "10",
    "question": "Shop sign/billboard",
    "answer":"1",
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
},
{
    "id": "11",
    "question": "Pylon",
    "answer" : "1",
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
},
{
    "id": "12",
    "question": "Banner",
    "answer": "3",
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
},
{
    "id": "13",
    "question": "Sport",
    "answer" : null,
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
},
{
    "id": "14",
    "question": "Matic",
    "answer": "3",
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
},
{
    "id": "16",
    "question": "Cub",
    "answer" : null,
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
}

]

在我链接的示例中,仅将array_answer中的一项输入到array_result中,即answer,现在我想添加picapicdeadlinenew_deadlinereasonnotes。我应该怎么做?我不明白,请帮助我。

谢谢..

1 个答案:

答案 0 :(得分:0)

您可以使用foreacharrays组合它们,请参见下面的代码:

      <?php

    $string='[
{
    "id": "4c42ff61-148c-11e9-b673-005056be36b2",
    "answer": "1",
    "id_question": "11",
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
},
{
    "id": "59a09a34-148c-11e9-b673-005056be36b2",
    "answer": "3",
    "id_question": "12",
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
},
{
    "id": "66774e30-148c-11e9-b673-005056be36b2",
    "answer": "3",
    "id_question": "14",
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
},
{
    "id": "9469c0e4-148c-11e9-b673-005056be36b2",
    "answer": "1",
    "id_question": "10",
    "pi": null,
    "ca": null,
    "pic": null,
    "new_deadline": null,
    "reason": null,
    "notes": null,
    "deadline": null
}
]';

    $string2='[
{
    "id": "10",
    "question": "Shop sign/billboard"
},
{
    "id": "11",
    "question": "Pylon"
},
{
    "id": "12",
    "question": "Banner"
},
{
    "id": "13",
    "question": "Sport"
},
{
    "id": "14",
    "question": "Matic"
},
{
    "id": "16",
    "question": "Cub"
}
]';

$json = json_decode($string, true);
$json2 = json_decode($string2, true);

$array0=array();
foreach($json as $key)
{
    $array0[$key['id_question']]=$key;


}


$array1=array();
foreach($json2 as $key)
{

    $array1[$key['id']]=$key['question'];

            if(!isset($array0[$key['id']]))
            {
        $row=array();
        $row["id"]=$key['question'];
        $row["id_question"]=$key['id'];
        $row["answer"]=null;
        $row["pi"]=null;
        $row["ca"]=null;
        $row["pic"]=null;
        $row["new_deadline"]=null;
        $row["reason"]=null;
        $row["notes"]=null;
        $row["deadline"]=null;
        $array0[]=$row;
            }



}
$array2=array();

foreach($array0 as $key)
{

    if(isset($array1[trim($key['id_question'])])){
        $key['question']=$array1[$key['id_question']];
                                                 }

    $key['id']=$key['id_question'];
    unset($key['id_question']);

    $array2[]=$key;




}

// echo
print_r($array2);

// convert to json
$json=json_encode($array2);



    die;

查看实时示例:click here