[PHP-users 9031] Re: 文字列から配列データの格納について
K.Ono
php-users@php.gr.jp
Mon, 29 Jul 2002 23:59:16 +0900
小野です。
evalではどうも、配列要素が空の場合の判定に問題があるようですね。
次のようなコードでいかがでしょうか。
------------------------------
1 function sample($a,$b,&$Dim){
2 $array=split('/',$a);
3 $tmp=&$Dim;
4 foreach($array as $v){
5 if($v==''){
6 $v=0;
7 while(isset($tmp[$v]))$v++;
8 }
9 $tmp=&$tmp[$v];
10 }
11 $tmp=$b;
12 }
13 $Dim=array();
14 sample("a/b/c/d",1,$Dim);
15 sample("a/b//d",2,$Dim);
16 print_r($Dim);
------------------------------
途中、6,7行目で空配列の場合の指数の選定をしていますが、
ここのところを、
$v=(isset($tmp))?(sizeof($tmp)):(0);
のように本当はしたいところです。
ただ後者の場合、15行目の関数による代入が、
$Dim["a"]["b"][0]["d"]=2;
とはならず、
$Dim["a"]["b"][1]["d"]=2;
になります。
もし、これで問題ないのであれば、実行速度そのものは後者
の方が勝るでしょう。