如何在PHP數組修改的值,如果你不事先知道數組的結構?
例
在下文陣列,我在陣列,其中「系統」 ==「的knoppix」的一部分以改變「fave_color」到「藍色」 ...問題是我不知道數組的結構將在運行什麼,所以我不能簡單地做:
$myarray['settings']['user_prefs']['otherhost']['fave_color'] = 'blue';
這是行不通的,因爲嵌套在運行時的fave_color未知。
此外,我感興趣的fave_color密鑰是,具體取決於系統陣列密鑰。
我必須找到值爲'knoppix'的人,然後更改相應的'fave_color'值,確保不會更改數組中的任何其他fave_color值。
'settings' => array(
'user_prefs'=>array(
'localhost'=>array(
'fave_color'=>'orange',
'system' =>'unbuntu',
),
'otherhost'=>array(
'fave_color'=>'yellow',
'system' =>'knoppix',
),
),
),
你是什麼意思你不知道數組的結構?它是隨機的嗎?必須有一些結構,或者你不知道你想要改變什麼樣的價值。 – meagar 2011-02-25 21:52:37
我知道有一個關鍵的'系統',我知道有一個相應的兄弟關鍵'fave_color'...我不知道這些關鍵將位於數組中的位置......(我不知道是否它會在設置或設置/ user_prefs或設置/ otherhost),當它需要將fave_color從'黃色'更改爲'藍色'。此外,我不能只改變fave_color,但我必須更改*特定* fave_color在system =='knoppix'的分支中。 – dreftymac 2011-02-25 21:56:49
cakephp :: set是另一個選項,請參閱「flatten」方法。 – dreftymac 2011-10-31 14:22:23