【问题标题】:PHP Merge two arrays to combine to get expected o/pPHP合并两个数组以组合以获得预期的o / p
【发布时间】:2018-07-09 12:36:51
【问题描述】:

我有一个包含值的数组

[{
        "id": "17",
        "pf_label": "Gender"
    },
    {
        "id": "18",
        "pf_label": "Age"
    },
    {
        "id": "12",
        "pf_label": "Address Line"
    }
]

我还有另一个数组

[{
    "": "",
    "17": "male",
    "18": "27"
}, {
    "": "",
    "17": "female",
    "18": "26",
    "12": "japan"
}]

我需要一个值数组,其中两个数组与其 id 匹配。

预期输出

[{
    "": "",
    "Gender":"male"
    "Age": "27"
}, {
    "": "",
    "Gender": "female",
    "Age": "26",
    "Address Line": "japan"
}]

任何人都可以帮助获得预期的输出。

【问题讨论】:

  • 您能告诉我们您尝试了什么以及出了什么问题吗? SO 是一个解决问题的社区,而不是一个免费的代码社区
  • "" => "" 的意义何在?

标签: php mysql merge combiners


【解决方案1】:

请尝试以下解决方案

$json = '[{
        "id": "17",
        "pf_label": "Gender"
    },
    {
        "id": "18",
        "pf_label": "Age"
    },
    {
        "id": "12",
        "pf_label": "Address Line"
    }
]';

$jsondec = json_decode($json,true);
foreach ($jsondec as $key => $value) {
  $newjson[$value['id']] = $value['pf_label'];
}

$json2 = '[{
    "": "",
    "17": "male",
    "18": "27"
}, {
    "": "",
    "17": "female",
    "18": "26",
    "12": "japan"
}]';

$jsondec2 = json_decode($json2,true);
foreach ($jsondec2 as $key => $value) {
    foreach ($value as $key => $value) {      
      $newary[$newjson[$key]] = $value;           
    }
    $finalary[] = $newary;
}

$result = json_encode($finalary);

希望对您有所帮助!

【讨论】:

    【解决方案2】:

    你可以试试这个!

    <?php
    $jsonString1 = '[{
            "id": "17",
            "pf_label": "Gender"
        },
        {
            "id": "18",
            "pf_label": "Age"
        },
        {
            "id": "12",
            "pf_label": "Address Line"
        }
    ]';
    
    
    $jsonString2 = '[{
        "": "",
        "17": "male",
        "18": "27"
    }, {
        "": "",
        "17": "female",
        "18": "26",
        "12": "japan"
    }]';
    
    
    $array1 = json_decode($jsonString1, true);
    $indexes = array();
    foreach ($array1 as $element) {
        $indexes[$element['id']] = $element['pf_label'];
    }
    
    
    $array2 = json_decode($jsonString2, true);
    foreach ($array2 as $element) {
        foreach ($element as $key => $value) {
            if ($key) {
                $singleElement[$indexes[$key]] = $value;
            } else {
                $singleElement[""] = "";
            }
        }
        $result[] = $singleElement;
    }
    
    
    var_dump($result);
    

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多