Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-如何根据另一个json更改json值_Php_Json_Dictionary_Replace - Fatal编程技术网

PHP-如何根据另一个json更改json值

PHP-如何根据另一个json更改json值,php,json,dictionary,replace,Php,Json,Dictionary,Replace,我是新的PHP编程,我需要你的灯 我有一个JSON文件,如: "data": [{ "DIAGNOSTIC_TYPE_ID": 1, "VALUE": "288.0" }, { "DIAGNOSTIC_TYPE_ID": 2, "VALUE":

我是新的PHP编程,我需要你的灯

我有一个JSON文件,如:

    "data": [{
            "DIAGNOSTIC_TYPE_ID": 1,
            "VALUE": "288.0"
        },
        {
            "DIAGNOSTIC_TYPE_ID": 2,
            "VALUE": "-0.1"
        },
        {
            "DIAGNOSTIC_TYPE_ID": 3,
            "VALUE": "327.67"
        },
        {
            "DIAGNOSTIC_TYPE_ID": 1,
            "VALUE": "288.0"
        },
        {
            "DIAGNOSTIC_TYPE_ID": 2,
            "VALUE": "-0.1"
        },
        {
            "DIAGNOSTIC_TYPE_ID": 3,
            "VALUE": "327.67"
        }]
我必须使用另一个json文件来更改它,如下所示:

"diagnostics_keys": [
            {
                "ID": 1,
                "type": "BTTPV",
                "key": "0_193_bttpv",
                "unit": "V"
            },
            {
                "ID": 2,
                "type": "BTTPC",
                "key": "0_195_bttpc",
                "unit": "A"
            },
            {
                "ID": 3,
                "type": "AVGKMKWH",
                "key": "0_202_avgkmKwh",
                "unit": "Km/Kwh"
            }]
我如何组合这两个(使用第二个json的ID和类型键/值,并用第一个json上的ID替换诊断_type_ID),并获得类似下面json的结果

 "data": [{
                "DIAGNOSTIC_TYPE_ID": BTTPV,
                "VALUE": "288.0"
            },
            {
                "DIAGNOSTIC_TYPE_ID": BTTPC,
                "VALUE": "-0.1"
            },
            {
                "DIAGNOSTIC_TYPE_ID": AVGKMKWH,
                "VALUE": "327.67"
            },
            {
                "DIAGNOSTIC_TYPE_ID": BTTPV,
                "VALUE": "288.0"
            },
            {
                "DIAGNOSTIC_TYPE_ID": BTTPC,
                "VALUE": "-0.1"
            },
            {
                "DIAGNOSTIC_TYPE_ID": AVGKMKWH,
                "VALUE": "327.67"
            }]
任何人都有可能知道并且可能有帮助的观点或链接吗

//change to arrays
$data = json_decode(YOUR_DATA_JSON, true); // I don't know your json variable names, so replace them
$diagnosticKeys = json_decode(YOUR_DIAGNOSTIC_KEYS_JSON, true);
//iterate over data, this is the one you want to change
foreach ($data as &$dataItem) {//(& is for replacing the values)
    //another foreach for diagnostic keys
    foreach ($diagnosticKeys as $diagnosticKey) {
        if ($dataItem["DIAGNOSTIC_TYPE_ID"] == $diagnosticKey["ID"] {
            $dataItem["DIAGNOSTIC_TYPE_ID"] = $diagnosticKey["type"];
        }
    }
}
//change to json again
$data = json_encode($data);
未测试,但应能正常工作。

$data1=json\u decode($json1); $data2=json_解码($json2); $result=[]; foreach($data1->data as$key=>$value){ foreach($data2->diagnostics_键为$i=>$val){ 如果($value->DIAGNOSTIC\u TYPE\u ID==$val->ID){ $value->DIAGNOSTIC_TYPE_ID=$val->TYPE; $result[$key]['DIAGNOSTIC_TYPE_ID']=$val->TYPE; $result[$key]['VALUE']=$VALUE->VALUE; } } } echo json_编码($result);