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

になります。
もし、これで問題ないのであれば、実行速度そのものは後者
の方が勝るでしょう。