我正在处理$ 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