首页 > 解决方案 > 仅使用相同的键合并 json 数组

问题描述

我有两个 Json 数组,如下所示:

$a='[{"type":"text","req":0,"name":"user"},{"type":"text","req":0,"name":"org"},'
        . '{"type":"textarea","label":"Notes","req":0},'
        . '{"type":"text","label":"text1","req":0},'
        . '{"type":"textarea","label":"Notes","req":0},'
        . '{"type":"text","label":"text2","req":0},'
        . '{"type":"textarea","label":"Notes","req":1}]';

$b='[{"type":"textarea","label":"Notes","Element_Values":"331","Element_Name":"textarea-710091","Count_Images":0},'
        . '{"type":"text","label":"text1","Element_Values":"1","Element_Name":"text-987351","Count_Images":0},'
        . '{"type":"textarea","label":"Notes","Element_Values":"332","Element_Name":"textarea-254458","Count_Images":0},'
        . '{"type":"text","label":"text2","Element_Values":"2","Element_Name":"text-3410","Count_Images":0},'
        . '{"type":"textarea","label":"Notes","Element_Values":"333","Element_Name":"textarea-554051","Count_Images":0}]';

如您所见,数组“a”以几个不在数组“b”中的键开头。我想跳过具有“名称”键的数组。

我做了以下代码,但没有工作:

  $c = [];
$aJson=json_decode($a, true);
$bJson=json_decode($b, true);
foreach($aJson as $key => $array)
{
    foreach($array as $an)
    {
        if(array_key_exists('name', $an)) 
        {
            //continue;        
        }
    }


        $c[$key] = array_merge($bJson[$key],$array);

}
echo json_encode($c);

结果数组 c 应该是:

[{"type":"textarea","label":"Notes","Element_Values":"331","Element_Name":"textarea-710091","Count_Images":0,"req":0},{"type":"text","label":"text1","Element_Values":"1","Element_Name":"text-987351","Count_Images":0,"req":0},{"type":"textarea","label":"Notes","Element_Values":"332","Element_Name":"textarea-254458","Count_Images":0,"req":0},{"type":"text","label":"text2","Element_Values":"2","Element_Name":"text-3410","Count_Images":0,"req":0},{"type":"textarea","label":"Notes","Element_Values":"333","Element_Name":"textarea-554051","Count_Images":0,"req":1}]

请帮我

标签: phparraysjson

解决方案


This is a simple debug problem, $array is already the array.

$index = 0;
foreach($aJson as $key => $array)
{
    if(isset($array['name'])) 
        continue;        

    $c[$index] = array_merge($bJson[$index], $array);
    $index++;
}

推荐阅读