• 締切済み

二次元配列が上手くいきません

Sample.txt 2 2 10 01 php <?php $handle = fopen('sample.txt','r'); // ファイルを開いてファイルポインタを取得 $contents = fread( $handle, 1024 ); // ファイル内容を1024バイト分読み込んで変数に格納 fclose( $handle ); // ファイルを閉じてファイルポインタを破棄 $start_part=array_map("trim",explode("\n",$contents));//$start_partは初期画像の行の配列 改行を削除 $r = $start_part[0];//横サイズを読み込む $g = $start_part[1];//縦サイズを読み込む $start[][]=""; //g行r列の2次元配列を作成 start[x][y],end[x][y]; for($j=0;$j<$g;$j++){ for($i=0;$i<$r;$i++){ $start[$i][$j] = substr($start_part[2+$j],$i,1); } } print_r($start); ?> xamppでphpの勉強をしている初心者です。 理想では$start[0][0]=1 $start[0][1]=0 $start[1][0]=0 $start[1][1]=1となってほしいのですが、 Array ( [0] => Array ( [0] => ) ) としか表示されず困っています。どこを直せばよいのでしょうか。どこが良くないのでしょうか。 ご教授ください。よろしくお願いします。

みんなの回答

  • xKENx
  • ベストアンサー率65% (21/32)
回答No.1

試してみました。 まず気になったのはファイル名の違いです。 読み込むファイル名=Sample.txt、プログラム中で指定しているファイル名=sample.txt 先頭文字が大文字/小文字の違いがありますが、問題ありませんか? 上記、問題なければ、次はSample.txtの内容についてです。 1行目は改行のみでしょうか?であれば、tcnksukimaさんの結果と同じになります。$rの内容が ""(空文字列)になるからです。 もし、Sample.txtの1行目が改行ではなく、"2"である場合、tcnksukimaさんの期待する結果となります。 まずは、$contents に読み込まれた内容を確認してみてはいかがでしょうか。

tcnksukima
質問者

補足

回答ありがとうございます。 sampleの大文字は打ち間違いでした。すいません。 いろいろ試してみた結果、sampleは正しく読み込めているようです。 なお、一行目に改行は入っていません。 問題点が見つかりました。 $r $gを表示するとどちらも2と表示するのですが、 $r+=2; $g+=2; とすると%rは2に、$gは4になります。 しかし、is_int()で確認したところどちらも数字と判定されました。 文字列として読み込まれてるのか?と思い、intvalで$r,$gを変換してみたところ、$rは0、$gはそのまま2となりました。 よくわかりません。 ご教授ください。よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A