PHPwhileによるエラーの原因と解決方法

このQ&Aのポイント
  • PHPの初心者がPHPwhile文を使用している際に発生するエラーについて解説します。
  • プログラム内で変数に代入する際に間違っている可能性があります。
  • 変数への代入に関する基本的なルールを確認し、正しく修正してください。
回答を見る
  • ベストアンサー

PHPwhileによるエラーの原因

お世話になります。 PHPの勉強を始めたばかりの初心者です。 入力される値 2 8 出力値 2 3 4 5 6 7 8 と表示するように以下のプログラムを作成しました。 <?php $input=fgets(STDIN); $input2=fgets(STDIN); $i = $input; $a = $input2; while ($i<=$a){ echo $i."\n"; $i++; } ?> 結果「Runtime error(Exit status:null)」とエラーメッセージが出ます。 $i = $input; $a = $input2; を $i = 2; $a = 8; にするとうまく表示できます。 変数に代入する変数はこれで合ってますでしょうか? どこか、間違っているか、教えてくださいますか? よろしくお願いします。

  • nkmyr
  • お礼率67% (403/600)
  • PHP
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5071/13248)
回答No.1

STDINで取って来た値には改行文字も含まれているので、whileの比較条件で文字列比較されてしまっていて無限ループになってるし、$i++も期待通りの動きをしていない。 intにキャストしてやれば期待通りの動きになります。 $i = (int)$input; $a = (int)$input2;

nkmyr
質問者

お礼

アドバイスをありがとうございます。 お陰様で表示出来ました。 エラーになる原因も教えていただき、助かりました。

関連するQ&A

  • PHPwhileによる同じテキストを指定回数出力

    お世話になります。 入力される値 3 $input=fgets(STDIN); $i=1; while ($i<=$input){ echo $i."\n"; $i++; } 出力値 1 2 3 それを 出力値 おはよう おはよう おはよう と表示するにはどうすれば良いのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 配列格納時の文字化け

    UTF-8文字で作ってますが 変数を配列に入れると文字化けします。 $handle = fopen($store_file,"r"); while(($rec = fgets($handle))) { $csvdata[$i] = $csvdata; <input type="hidden" name="<?php echo $csvdata[$i] ?>" value="<?php echo $csvclient ?>"> } これでデータをPOSTしたいのですが文字化けします。 echoで配列内表示しても化けてます。 配列に入れたタイミングで化けているかもしれません。 何かいけないでしょうか?

    • 締切済み
    • PHP
  • PHP whileの意味を知りたい

    お世話になります。 $input=trim(fgets(STDIN)); while($input){ $array[]=$input; $input=trim(fgets(STDIN)); } 上記の意味を教えてください。 while (条件式) 実行する処理; 例 $num = 0; while (num < 2){ print "num=".$num; } 今まではこういった式を学んでいました。 while($input)の$inputという条件式?? $input=trim(fgets(STDIN));の意味も飲み込めないです。 解説を宜しくお願いします。

    • ベストアンサー
    • PHP
  • phpのプログラムについて

    <?php $n = trim(fgets(STDIN)) * 60; $m = trim(fgets(STDIN)); for ($i = 1; $i <= $m; $i ++) { $n -= trim(fgets(STDIN)); $o = $n >= 0 ? $i : $o; } echo $n >= 0 ? 'OK' : $o; ?> というコードの $o = $n >= 0 ? $i : $o; の部分の意味がわかりません。 ?の意味と:の意味教えて下さい。

  • PEARのAuth用のLoginFunctionが動かない

    $a = new Auth("MDB2", $options); のように第3引数を省略し、デフォルトのログイン画面を使うようにするとちゃんとログインできるのですが、自分で作った関数をログイン用に使おうとすると、$a->start()でフォームは表示されますがユーザー名などが入ってきていないようです。getAuthで認証の確認をすると失敗しています。どうして動かないのでしょうか? function loginFunction($username = null, $status = null, $auth = null) { /* * HTML出力は、作成するアプリケーションに合うように、 * 変更してください。 */ echo "<form method=\"get\" action=\"index.php\">"; echo "<input type=\"text\" name=\"username\">"; echo "<input type=\"password\" name=\"password\">"; echo "<input type=\"submit\">"; echo "</form>"; echo "ユーザー名:" . $username . "<br />\n"; //echo "Status:" . $status . "<br />\n"; }

    • 締切済み
    • PHP
  • PHP/MySQL SQLエラーについて。

    PHP/MySQLについての質問です。 当方PHP/MySQLについては初心者で、現在参考書を見ながらWebアプリケーションを作成しています。 いくらやっても成功しない例があるので、どこが間違っているのか、 なぜ成功しないのかご教示願いたいです。 エラー名:SQL実行エラー 要因:不明。SQL文を変えたりしたところ成功したこともあるので(elect id,name,age from input_table 等)SQL文に間違いがあるのか? -------------------input.html------------------------ <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <form action="input.php" method="post"> 名前:<input type="text" name="nm"> 年齢:<input type="text" name="age"> <input type="submit" name="exec" value="登録"> </form> </body> </html> -----------------------input.php---------------------------- <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <?php //DB接続 if(!$con=mysql_connect("localhost","root","********")){ //passwardは正確 echo"接続エラー"; exit; } //DB選択 if(!mysql_select_db("input",$con)){ echo"DB選択エラー"; exit; } $sql = "insert into input_table(name,age) values('$nm',$age)"; if(!$res=mysql_query($sql)){ echo"SQL実行エラー"; //ここでこのエラーが表示されてしまう exit; } echo "登録完了"; mysql_close($con); ?> </body> </html> --------------------database----------------------- create table input_table( id int not null auto_increment, name varchar(20) not null, age int not null, primary key(id) )

    • ベストアンサー
    • PHP
  • PHPのwhileの理解の仕方教えてください。

    初めまして。つい最近PHPを勉強しようと始めました。 初歩の初歩でまったくの知識がなく、参考書を何度も読んでいますが、 理解の仕方が分かりません。 下記のwhileの例文にについてお教えください。 <?php echo "整数を入力:"; $a = trim(fgets(STDIN)); $result = false; $n = 2; while($n <= $a/2){ if($a % $n == 0){ $result = true; } $n++; } if($result){ echo $a . "は、素数じゃないです。"; } else { echo $a . "は、素数です。!!"; } ?> 例文の中の$result = false; や$result = true;が 参考書には説明していなく、 どのようにwhileの構文では解釈すればよいのか お教えください。(あってもなくてもよいのか?) この$result = false;がなくてもPHPで動作はできるのは確認済みなのですが、 どうしてもこの部分が気になり、理解をしようと別の参考書のwhileの部分を読みましたが、 全く理解できませんでした。 この程度の知識で無謀だというのは十分承知しておりますが、 今後も同様な事(何が書いてあるか分からない)が起きると思いますので、 何か良いアドバイスをお願い致します。

  • phpの変数に01と格納したい。

    PHPの変数に01と代入し、echoで表示させると1になってしまうのですが、01をダブルクオーテーションでくくらないで、01と表示させる方法はありますか?

    • 締切済み
    • PHP
  • mixiアプリでjavascriptで取得した変数をPHP変数にするに

    mixiアプリでjavascriptで取得した変数をPHP変数にするには? いつもお世話になっております。 mixiアプリで利用者のIDを取得する方法は、 document.getElementById("id").innerHTML = id; で行うことができたのですが、これはHTML内に、   <span id="id"></span> と記載した場合のみIDが表示されるようになっています。 これをPHPの変数(例:$id)などとして扱うことはできないでしょうか? 任意の場所に<?php echo $id; ?>と書けばIDが表示される仕組みにしたいと考えています。 (最終目的としてはinputのvalueにmixiIDを代入し、次ページへ変数を渡せたいのです) <input type="hidden" name="id" value="◆◆"> ◆◆の部分にIDを代入させたいです 以上よろしくお願いいたします。

  • PHPエラーについて

    PHPで修正をしたら下記のエラーがでました。 Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /usr/home/g105427/html/test/blog_special.php on line 199 ble border="0" cellpadding="3" cellspacing="0"> <?php $i = 0; do { $i = $i + 1; ?> <tr> <td><IMG src="image/list.gif" width="13" height="13" border="0"><font color="#FF8000"><a href="blog_02.php?id=<?php echo $row_rs_blog_02['id']; ?>"> <?php echo mb_substr($row_rs_blog_02['title'],0,50); ?> <?php if (mb_strlen($row_rs_blog_02['title']) >= '50') { echo('…'); } ?> </a> <?php echo "("; echo substr($row_rs_blog_02['date'], 4,2); echo "/"; echo substr($row_rs_blog_02['date'], 6,2); echo ")"; ?></font></td> </tr> <?php } while ($row_rs_blog_02 = mysql_fetch_assoc($rs_blog_02) and $i < 2); ?> </table> <BR> <BR> ちなみに199行目は ?php } while ($row_rs_blog_02 = mysql_fetch_assoc($rs_blog_02) and $i < 2); ?> になっています。 教えてください。 説明が悪くてすいません。

    • ベストアンサー
    • PHP

専門家に質問してみよう