- 締切済み
多次元配列のスマートな書き方
$key文字列の:区切りで階層化した多次元配列に$valを代入するのですが 階層が深くなるにつれてcaseの記述も増えるため、ほとんど無限?に深くても 代入できるように(イ)の部分を変えたいのですが、スマートに記述する方法はありますか? <?php $key = "A:B:C"; ////$key = "A:B:C:D:E:F:G"; // この場合はcase 7まで書かなければならない? $val = "test"; $soe = split(":", $key); // -------------------------- イ switch (count($soe)) { case 1: $atr[$soe[0]] = $val; break; case 2: $atr[$soe[0]][$soe[1]] = $val; break; case 3: $atr[$soe[0]][$soe[1]][$soe[2]] = $val; break; default: print "ERR!"; exit; } // -------------------------- イ print_r($atr); exit; ?>
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
こんな感じでやってみてはどうでしょうか? <?PHP $key = "A:B:C:D:E:F:G"; $val = "test"; $soe = split(":", $key); $array[0]=&$atr; for($i=0;$i<count($soe);$i++){ $array[$i+1]=&$array[$i][$soe[$i]]; } $array[count($soe)]=$val; unset($array); print_r($atr); ?>