[PHP-users 24895] Re: 配列要素に対しての参照を作成した場合の動作について
retasu_ml @ yahoo.co.jp
retasu_ml @ yahoo.co.jp
2005年 3月 15日 (火) 22:48:10 JST
緋田です。
神谷様、早速のご返事ありがとうございました。
PHPの仕様かと思ったのですが、そうではなさそうですね。
もし、仕様というのであれば、私が見落としていた回避するための演算子みたい
ものがあるかと期待したのですが残念です。
ご教授頂いた回避方法で回避しようかと思いましたが、今回の配列は大雑把にい
うと以下のようなディレクトリ構造みたいな構造で要素数も多く、代入のさいの
処理時間がきになります。
(参照を使用する都度、配列の構造全体を代入するとなるとちょっとキツイか
も...)
幸い、配列の深さは決まっているので、コードは見にくくなりますが、参照を使
用せず配列の構造ベタ書きで対応することにしました。
こんなコードではなく
$refLvl4 = & $Root['Items'][0]['Items'][0]['Items'];
$refLvl4[0]['Name'] = 'php user';
$refLvl4[0]['Selected'] = TRUE;
↓
こんなコード
$Root['Items'][0]['Items'][0]['Items'][0]['Name'] = 'php user';
$Root['Items'][0]['Items'][0]['Items'][0]['Selected'] = TRUE;
貴重なお時間をいただき、ありがとうございました。
<配列の構造>
$Root['Name']
['Level1ItemCount']
['Level1SelectedCount']
['Level2ItemCount']
['Level2SelectedCount']
['Level3ItemCount']
['Level3SelectedCount']
['Level4ItemCount']
['Level4SelectedCount']
┌→['Items'][idx]['Name']
| ['Selected']
| ['Level2ItemCount']
| ['Level2SelectedCount']
| ['Level3ItemCount']
| ['Level3SelectedCount']
| ['Level4ItemCount']
| ['Level4SelectedCount']
| ┌→['Items'][idx]['Name' ]
| | ['Selected' ]
| | ['Level3ItemCount' ]
| | ['Level3SelectedCount' ]
| | ['Level4ItemCount' ]
| | ['Level4SelectedCount' ]
| | ┌→['Items'][idx]['Name']
| | | ['Selected']
| | | ['Level4ItemCount']
| | | ['Level4SelectedCount']
| | | ┌→['Items'][trm]['Name' ]
| | | | ['Selected']
| | | |
refLvl1 refLvl2 refLvl3 refLvl4 ←各次元の要素を
参照するさいの
変数名
------------------------- 以上 -------------------------
__________________________________
Do You Yahoo!?
Upgrade Your Life
http://bb.yahoo.co.jp/
PHP-users メーリングリストの案内