• 締切済み

区切り文字を配列に格納する方法を教えて下さい。

区切り文字を配列に格納する方法を教えて下さい。 $array[] = "abc,1981,1,12"; $array[] = "def,1982,2,18"; $array[] = "ghi,1991,4,12"; list($name[$i],$yy[$i],$mm[$i],$dd[$i]) = split("\,",$array[$i]); でループさせればそれぞれの変数に代入できますが、例えば $name["abc"]["yy"] = "1981"; $name["abc"]["mm"] = "1"; $name["abc"]["dd"] = "12"; のように分解するにはどうすれば良いでしょうか?

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.3

コールバック関数を使うのも面白いのでは? <? $array[] = "abc,1981,1,12"; $array[] = "def,1982,2,18"; $array[] = "ghi,1991,4,12"; function callback($x){ $a = split(',',$x); $b[$a[0]]["yy"] = $a[1]; $b[$a[0]]["mm"] = $a[2]; $b[$a[0]]["dd"] = $a[3]; return $b; } $name=array_map(callback, $array); print_r($name); ?>

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

<? $array[] = "abc,1981,1,12"; $array[] = "def,1982,2,18"; $array[] = "ghi,1991,4,12"; foreach($array as $val){ preg_match("/^(.*),(\d*),(\d*),(\d*)/",$val,$matches); foreach(Array(2=>"yy",3=>"mm",4=>"dd") as $key=>$val2){ $name[$matches[1]][$val2]=$matches[$key]; } } print "<pre>"; print_r($name); print "</pre>"; ?>

  • will_a
  • ベストアンサー率22% (4/18)
回答No.1

あまり参考にならないかもしれませんが。。。 ループの中で、以下のようにするのは、いかがでしょうか? $arr = split("\,",$array[$i]); $name[$arr[0]]["yy"] = $arr[1]; $name[$arr[0]]["mm"] = $arr[2]; $name[$arr[0]]["dd"] = $arr[3];

関連するQ&A

専門家に質問してみよう