【问题标题】:combine 2 array by matching key通过匹配键组合 2 个数组
【发布时间】:2019-01-15 08:49:35
【问题描述】:

我已按照 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 中只有 1 项输入到array_result,即answer,现在我想添加picapicdeadline,@ 987654335@、reasonnotes。我该怎么做?不明白,请帮帮我..

谢谢你..

【问题讨论】:

  • 您的数组问题是无效的 json,因为它到处都是印刷/智能引号 (),而不是它们应该是中性/直引号 (") - 例如“Cub” 应该是 "Cub"
  • 我已经编辑了我的 array_question @lovelace
  • 您是否编辑了 的所有出现,因为有很多(cub 只是一个示例) - 如果 json 包含无效字符,您的 json_decode() 将返回 NULL,这可能解释(部分)您的问题。
  • 是的,我已经全部编辑了

标签: php arrays json array-merge


【解决方案1】:

您可以使用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

【讨论】:

  • 如果我想显示所有问题怎么办?有答案或没有答案。如果问题没有答案,则回答:null
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
相关资源
最近更新 更多