• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字の入り方について)

プログラム作成で発生した問題について

このQ&Aのポイント
  • 質問者は文字の入り方に関して疑問を持っています。プログラムを簡略化して説明していますが、ループ内で条件文が成り立たないはずなのに、意図しない結果が出力されています。
  • プログラムはwhileループ内でカウントを取り、SQL文を作成しています。しかし、ループ内の条件文が成り立たない場合は実行されないはずなのに、意図しない結果が得られています。
  • 質問者はなぜループ内の処理が余計に実行されているのか疑問に思っています。条件式が正しく設定されているはずなのに、プログラムの動作が予期しないものになっています。

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

  • ベストアンサー
noname#227796
noname#227796
回答No.1

この場合だと、$iが取り得る値は、「0以上の整数」ですね。 なので、 if($i>=2) { を通らないのは、$iが「0,1」の場合の2回だけです。 つまりは、このif文は「$iが2以上であれば何回でも回る」可能性があります。 となると、原因は、 while(!feof($this->fp)){ の部分にあると考えられるでしょう。 ここで、余分に1回ループしている、と。 その1回余計に回る分が配列$sql_valueの格納範囲外の値を参照してしまっており、何も値が表示されないわけです。 まあ、前の方の処理がわからないので、本当は if ( $i <= 2 ) { の間違いじゃないかとか、色々つっこみどころはありますが、単純なミスだとお思いますよ。 配列に何が設定されているか?その配列の要素数は?などなど、条件となる項目を細かく洗い出してみて、自分の意図したとおりの参照をしているかどうか確認してみましょう。

aiurai54
質問者

お礼

すみません。確認してみたところやはり4回、回ってました。 EOFの部分が次の行なので、ひっかかりませんでした。。 なので、ループが合計で4回(3回しかまわっていと思っていました。) 単純なミスですみません。 ありがとうございます。

その他の回答 (1)

  • Dpop
  • ベストアンサー率51% (279/544)
回答No.2

ここおかしくないですか? > $sql_insert .="INSERT INTO "; は、 $sql_insert ="INSERT INTO "; の様な。初期化がされていない様な。。

aiurai54
質問者

お礼

ありがとうございます。

関連するQ&A