私は$ 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())
コードをすべて持っていないようにしたいrこのような場所。どのようにして元の配列が常に更新され、入れ子のレベルが変更されるようにするのですか?
& $ arrという配列を渡すのはPHP 5.3で許可されていないようです。私はこのエラーが発生します。 Call-time pass-by-reference has been deprecated
。
なぜ機能がないのですか? $ arr [$ ia] [$ ib] = my_function(); ? – jValdron
@jValdronしかし、関数は何を返すだろうか?元の配列が更新されることを確認する最良の方法は何ですか? – sameold
あなたの関数は初期化を返すことができます: 'array( 'name' => array()、 'components' => array());'、おそらくちょうど質問を正しく理解していません:) – jValdron