アプリ版:「スタンプのみでお礼する」機能のリリースについて

$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;

?>

A 回答 (1件)

こんな感じでやってみてはどうでしょうか?



<?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);
?>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!