- ベストアンサー
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; } マップの読み込みなどをしたことある人など、 なにか分かる人がいましたら、お願いします。 (もっと簡単な方法など)。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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; }
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
PHPの配列は自動採番するので以下で十分だと <?PHP $temp=file("map.txt"); foreach($temp as $tempmap){ $map[]= explode(",",$tempmap); } ?>
お礼
回答ありがとうございます。 あとで、試してみます。
- skytemple
- ベストアンサー率62% (5/8)
$iの初期化する位置が間違っています。foreachの前に置けばうまくいきます。 $temp=file("map.txt"); $i=0; foreach($temp as $tempmap){ $map[$i]=explode(",",$tempmap); $i++; } マップ読み込みの効率の良い方法については私は分かりません。 30*30程度ならこれでもそれほど問題ないような気もしますが…。
お礼
回答ありがとうございます。 すいません。単純なミスでした。
お礼
回答ありがとうございます。 そうでした。単純なミスでした。