[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 メーリングリストの案内