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
? ? ? ? ? ? ? ? )
? ? ? ? )
)

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);
小提琴。
- 2 回答
- 0 關注
- 152 瀏覽
添加回答
舉報