[PHP-users 9045] Re: 文字列から配列データの格納について
K.Ono
php-users@php.gr.jp
Thu, 01 Aug 2002 12:52:06 +0900
菅原さん
小野です。
お求めの仕様がようやく理解できました。
こんな感じでしょうか....
#--------------------------------------------#
function sample($a,$b,&$Dmy){
$array=split('/',$a);
$tmp=&$Dmy;
$max=sizeof($array);
for($i=0;$i<$max;$i++){
$v=$array[$i];
$n=($i<($max-1))?($array[$i+1]):(false);
if($v==''){
$v=0;
while(isset($tmp[$v]))$v++;
if($n!==false){
$f=false;
for($j=0;$j<$v;$j++){
if(!isset($tmp[$j][$n])){
$v=$j;
break;
}
}
}
}
$tmp=&$tmp[$v];
}
$tmp=$b;
}
#--------------------------------------------#
ただ、考えて見ると一つ問題がありそうですね。
例えば、
'a/b/c',1
のようなデータを与えた場合、次の代入が行われることになります。
$Dmy['a']['b']['c']=1;
つまり、$Dmyと$Dmy['a']と$Dmy['b']の3つまではは「配列」ですが、
$Dmy['a']['b']['c']は 1 という値を持つスカラー型になります。
そこに、
'a/b/c/d,2
のようなデータを与えると、配列ではないはずの、
$Dmy['a']['b']['c']に対して、['d']という添え字を与えることになり、
これはエラーになるでしょう。
もちろん、回避は出来ますが、どのように回避するかは仕様次第ですね。