亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 PHP 中通過鍵更新現有 JSON 數據中的值

在 PHP 中通過鍵更新現有 JSON 數據中的值

PHP
MM們 2023-10-22 21:48:13
我有 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我怎樣才能做到這一點?
查看完整描述

2 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

事情不是這樣的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 上的演示


查看完整回答
反對 回復 2023-10-22
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

通過引用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);

小提琴



查看完整回答
反對 回復 2023-10-22
  • 2 回答
  • 0 關注
  • 152 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號