• ベストアンサー

30*30のマップファイルを2次元配列に読み込むには。

こんにちは。 30*30とかいうマップファイル ex(map.txt). 0,0,0,0,0 2,3,0,0,0 2,2,1,1,1... こんな感じのファイルを2次元配列に読み 込みたいのですが。 ゲームに使いたいので、横をX座標に対応 させ、map[1][2]=2,map[3][2]=1としたいのです。 次のように作ったのですがうまくいきません。 $temp=file("map.txt"); foreach($temp as $tempmap){ $i=0; $map[$i]=explode(",",$tempmap); $i=$i+1; } マップの読み込みなどをしたことある人など、 なにか分かる人がいましたら、お願いします。 (もっと簡単な方法など)。

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

foreach のたびに$iを0に初期化しているので$map[0]にしか入らないので、$i=0;をforeachの外に出しましょう。 $temp=file("map.txt"); $i=0; foreach($temp as $tempmap){ $map[$i]=explode(",",$tempmap); $i=$i+1; }

rheda
質問者

お礼

回答ありがとうございます。 そうでした。単純なミスでした。

その他の回答 (2)

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

PHPの配列は自動採番するので以下で十分だと <?PHP $temp=file("map.txt"); foreach($temp as $tempmap){ $map[]= explode(",",$tempmap); } ?>

rheda
質問者

お礼

回答ありがとうございます。 あとで、試してみます。

回答No.2

$iの初期化する位置が間違っています。foreachの前に置けばうまくいきます。 $temp=file("map.txt"); $i=0; foreach($temp as $tempmap){ $map[$i]=explode(",",$tempmap); $i++; } マップ読み込みの効率の良い方法については私は分かりません。 30*30程度ならこれでもそれほど問題ないような気もしますが…。

rheda
質問者

お礼

回答ありがとうございます。 すいません。単純なミスでした。

関連するQ&A