我正在處理$ arr並且在我使用它之前經常需要檢查索引是否已「初始化」。如何更改數組,並將更改映射到原始數組
這些指標中的嵌套
$arr[$ia]
$arr[$ia][$ib][$ic]
水平不同,但我對它們進行初始化,它總是以同樣的方式
$arr[$ia] = array('name'=>array(), 'components'=>array());
$arr[$ia][$ib][$ic] = array('name'=>array(), 'components'=>array());
我做的正是這樣
//if $arr[$ia] is not set, set it, then use it
if(!isset($arr[$ia])){
$arr[$ia] = array('name'=>array(), 'components'=>array());
}
$arr[$ia]['name'] = 'some value';
or
//if $arr[$ia][$ib] is not set, set it, then use it
if(!isset($arr[$ia][$ib])){
$arr[$ia][$ib] = array('name'=>array(), 'components'=>array());
}
$arr[$ia][$ib]['name'] = 'some other value';
我想將初始化步驟移到一個方法中,所以我沒有array('name'=>array(), 'components'=>array())
代碼像這樣的地方。我該如何做到這一點,以便原始數組始終得到更新,並且嵌套的級別會發生變化?
似乎將數組傳遞爲& $ arr在php 5.3中是不允許的。我得到這個錯誤。 Call-time pass-by-reference has been deprecated
。
爲什麼沒有功能? $ arr [$ ia] [$ ib] = my_function(); ? – jValdron 2011-12-22 17:59:21
@jValdron但函數將返回什麼?我的意思是確保原始數組得到更新的最佳方式是什麼? – sameold 2011-12-22 18:01:36
你的函數可能會返回初始化:'array('name'=> array()''components'=> array());',我可能只是不明白這個問題:) – jValdron 2011-12-22 18:30:21