我有一個物件:
{
"id": "GRP-25",
"text": "All Areas",
"groupid": 0,
"leaf": false,
"qtip": "Common",
"link": null,
"helplink": null,
},
在這里,我正在更改 的值,ID但我僅在leafis時才嘗試更改它true。如何將 a 的值定位leaf到 if 陳述句中?
array_walk_recursive($result, function (&$v, $k) {
if($k == 'id'){
$v ='GRP-'.$v;
}
});
uj5u.com熱心網友回復:
array_walk_recursive無法知道 的值leaf。您可以創建一個遞回函式來更改值id的leaf值:
function changeLeafId(array &$data)
{
foreach ($data as $k => $v)
{
// recursive call
if (is_array($v)) {
changeLeafId($data[$k]);
continue;
}
// update 'id' from 'leaf'
if ($k == 'id' && $data['leaf'] ?? false) {
$data[$k] = 'GRP-' . $v;
}
}
}
changeLeafId($result);
您可以使用示例資料查看結果:https ://3v4l.org/Ss584
uj5u.com熱心網友回復:
我認為您無法通過陣列行走來做到這一點,我傾向于使用 foreach
類似的東西
foreach ($results as &$result) {
if ($result->leaf == true) {
$result->id = 'GRP-'.$result->id;
}
}
假設在這里您將 json_decode 作為物件執行,否則如果您將 json_decode 作為陣列執行,則需要將 -> 更改為 []
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/426414.html
