在 PHP 中通过键更新现有 JSON 数据中的值

我有 JSON 数据,想通过键更新值。


JSON:


{

 "language":"en",

 "education":[

                {

                   "unit":"e1",

                   "language":"en"

                 }

              ],

 "membership":[

                {

                  "uei":"21",

                  "Uifed":"failed"

                }

              ]

}

我想将“失败”的值更改uifed为“成功”。


我做了什么?


$json = '{"language":"en","education":[{"unit":"e1","language":"en"}],"membership":[{"uei":"21","Uifed":"failed"}]}';

$arrayData = json_decode($json, true);

$replacementData = array('Uifed' => 'success');

$newArrayData = array_replace_recursive($arrayData, $replacementData);


echo var_dump($newArrayData);

结果:


NULL


我怎样才能做到这一点?


MM们
浏览 111回答 2
2回答

鸿蒙传说

事情不是这样的array_replace_recursive;替换数组需要与您要替换的数组具有相同的结构。对于您的示例数据,这将起作用:$json = '{"language":"en","education":[{"unit":"e1","language":"en"}],"membership":[{"uei":"21","Uifed":"failed"}]}';$arrayData = json_decode($json, true);$replacementData = array('membership' => array(array('Uifed' => 'success')));$newArrayData = array_replace_recursive($arrayData, $replacementData);print_r($newArrayData);输出:Array(    [language] => en    [education] => Array        (            [0] => Array                (                    [unit] => e1                    [language] => en                )        )    [membership] => Array        (            [0] => Array                (                    [uei] => 21                    [Uifed] => success                )        ))array_walk_recursive可以用来做你想做的事:$replacementData = array('Uifed' => 'success');array_walk_recursive($arrayData, function (&$value, $key) use ($replacementData) {    $value = $replacementData[$key] ?? $value;});print_r($arrayData);输出:Array(    [language] => en    [education] => Array        (            [0] => Array                (                    [unit] => e1                    [language] => en                )        )    [membership] => Array        (            [0] => Array                (                    [uei] => 21                    [Uifed] => success                )        ))3v4l.org 上的演示

慕标琳琳

通过引用foreach传递值的简单示例:$json = '{"language":"en","education":[{"unit":"e1","language":"en"}],"membership":[{"uei":"21","Uifed":"failed"}]}';$arrayData = json_decode($json, true);foreach ($arrayData['membership'] as &$membership) {    if ('failed' === $membership['Uifed']) {        $membership['Uifed'] = 'success';    }}print_r($arrayData);小提琴。
打开App,查看更多内容
随时随地看视频慕课网APP