for文が全然ループしていない

このQ&Aのポイント
  • for文が正しく書かれていないため、ループが実行されていません。
  • また、条件式が不正なためエラーが発生しています。
  • エディターの認識に問題がある可能性も考えられます。
回答を見る
  • ベストアンサー

for文が全然ループしていない

 下のようなfor文を作って回してみましたが、チェックのために一番最後に書いたPRINT文で「0」が表示され、その下に下線表示だけです。  一体どこが悪いのでしょうか。全く分かりません。  また「$i==9」を「$i=<9」と書いていましたら、エラー表示になりました、何が原因でしょうか。  エディター(TeraPad)の認識に原因があるのでしょうか。  文法のエラー表示は出ていません。  9*9の表を表示させるだけの簡単なコードなのですが。 <html><head><title>make_matrix_html</title></head> <body> <table border="1"> <?php for($i=1;$i==9;$i++){ print ("<tr><br />"); for($j=1;$j==9;$j++){ print ("<td>".($i*$j)."</td>"); } print ("</tr>"); } print ($i*$j); ?> </table></body></html>

  • htgo
  • お礼率33% (407/1224)
  • PHP
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

質問文をよく見たら $i =< 9 ってありますね。 等号と不等号の順番が逆です。 小なりイコールは <= 大なりイコールは >= です。 等号があと。

htgo
質問者

お礼

sakusaker7さん有難うございました。 何とかループしました。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

for (expr1; expr2; expr3) の expr2 はループを継続する条件ですから、ここに $i==9とか書いても ループは一回も通らず、結果として expr3で行っている $i, $jの インクリメントもやっていないので、スクリプトの末尾の print ($i*$j); が 0 × 0 で 0 になっているということです。 素直に $i <= 9 でいいはずですが、エラー表示というのは どこに出ているどういうメッセージですか? この条件式を修正してコマンドラインから実行しましたが ちゃんと出力がでてきましたよ。 ごちゃごちゃと見づらいので本当に正しい結果かどうかまでは見ていませんけど。

関連するQ&A

  • select ループ

    セレクトBOXの中をループさせて表示したいのですが? 上手く表示されません。 エラーメッセージ ・webサイトがメンテナンス中 ・webサイトにプログラム上の問題が  あると出ます。 下記ソースでおかしいところあれば お教え願えませんでしょうか? <html> <head><title>session.html</title></head> <body> <?php print"<table border="1"><tr>"; print"<td>"; print"<select name=kosu>\n"; for ($i=0; $i<5; $i++){ print"<option value=$i>$i\n"; } print"</select>"; print"</td>"; print"<td><input type=submit value="登録"></td>"; print"</tr>"; print"</table>"; ?> </body> </html>

    • 締切済み
    • PHP
  • htaファイルでFor文

    htaファイルでFor文を用いて表(Tableタグ)を動的に出力する事は可能でしょうか。 例えば <html> <head> <title></title> </head> <body> <table> <script language="VBScript"> Dim i For i = 1 To 50 </script> <tr> <td>a</td> <td>a</td> <td>a</td></tr> <script language="VBScript"> Next </script> </table> </body> </html> 実際にサンプルを作成しましたがエラーが発生してしまいました。 もしかしてできないのでしょうか。 ご存知の方がいましたらアドバイスいただけませんでしょうか。 何卒、皆さんのお知恵を私にお貸しいただけたら幸いです。 どうか、宜しくお願いします。 では、失礼します。

  • ループ

    TEXTBOXのループを試みますが 上手く表示されません。 下記ソースのおかしいところ ご指摘いただけませんでしょうか? <html> <head><title>session.html</title></head> <body> <table border="1"> <tr bgcolor="#BBBBBB"> <th>月</th> <th>日</th> <th>明細</th> </tr> <?php for($i=0; $i<3; $i++){      print"<td><input type=text name=$data[$i]></td>\n"; } ?> </table> </body> </html>

    • 締切済み
    • PHP
  • perl内のhtml文を、ループさせたいのですが、これってできないんでしょうか?

    たびたび申し訳ありません。周りに聞く人もいなく、まったくの初心者ですので、なにとぞお願いいたします。 下記の「ここから~ここまで」の$iの値を変えながらループさせたいのですが、まったくうまくいきません。なにかいい方法あったら教えてください。 それとも、こんな書き方じゃダメなんでしょうか? #!/user/bin/perl open(IN,"data.csv"); #flock IN,2; @line = <IN>; #flock IN,8; close(IN); $cnt = 0; foreach(@line){ ($sina[$cnt],$jpg[$cnt],$pr[$cnt],$kakaku[$cnt]) = split(/\,/,$_); $cnt++; } print<<"EOF"; Content-type: text/html <HTML> <HEAD> <TITLE>やぁ!</TITLE> </HEAD> <BODY> EOF ###################ここから print<<"EOF"; <TABLE border="1"> <COL span="4" width="100"> <TBODY> <TR> <TD width="300">$sina[$i]</TD> <TD width="300">$jpg[$i]</TD> <TD width="300">$pr[$i]</TD> <TD width="300">$kakaku[$i]</TD> </TR> </TBODY> </TABLE> EOF ##################ここまで print<<"EOF"; </BODY> </HTML> EOF

    • ベストアンサー
    • CGI
  • 配列データの受け取り

    下記配列を受け取ることが出来ません。 エラーになります。 受け取り側にARRAY[0],ARRAY[1]と 表示されます。 実際は送信側のinputboxに入力した値を 受け取り側で表示させたいのですが・・・ おかしい箇所ご指摘いただけないでしょうか? それとも、PHPでは出来ないことなのでしょうか? //送信側 <html> <head><title>session.html</title></head> <body> 請求書 <form action="teke.php" method="post"> <table border="1"> <tr align="center"> <td>月</td> <td>日</td> <td>明細</td> <td>単価</td> <td>数量</td> <td>金額</td> </tr> <?php for($q=0;$q<10;$q++){ print"<tr>"; print"<td>"; print"<select name=kosu>\n"; print"<option value=''></option>\n"; for ($i=1; $i<13; $i++){ print"<option value=$i>$i</option>\n"; } print"</select>"; print"</td>"; print"<td>"; print"<select name=kosu>\n"; print"<option value=''></option>\n"; for ($j=1; $j<32; $j++){ print"<option value=$j>$j</option>\n"; } print"</select>"; print"</td>"; for($o=0;$o<4;$o++){ print"<td><input type='text'name='".$data[$q][$o]."'></td>"; } print"</tr>"; } ?> </table> <input type="submit" value="登録"> </body> </html> //受け取り側 <html> <head><title>session.html</title></head> <body> 請求書 <table border="1"> <tr align="center"> <td>月</td> <td>日</td> <td>明細</td> <td>単価</td> <td>数量</td> <td>金額</td> </tr> <?php for($q=0;$q<10;$q++){ print"<tr>"; print"<td>"; print"<select name=kosu>\n"; print"<option value=''></option>\n"; for ($i=1; $i<13; $i++){ print"<option value=$i>$i</option>\n"; } print"</select>"; print"</td>"; print"<td>"; print"<select name=kosu>\n"; print"<option value=''></option>\n"; for ($j=1; $j<32; $j++){ print"<option value=$j>$j</option>\n"; } print"</select>"; print"</td>"; for($o=0;$o<4;$o++){ $data[$q][$o]=$_POST["$data[q][o]"]; $_SESSION["$data[q][o]"].=$_POST["data[$q][$o]"]; print"<td>$data[$q][$o]</td>"; } print"</tr>"; } ?> </table> <input type="submit" value="登録"> </body> </html>

    • 締切済み
    • PHP
  • PHPの問題を解いているのですが…

    昨日からずーと悩んでいるのですがfor文で *実際はテーブルを使ってます 値1 44 値2 55 値3 66 値4 77 件数 4件 平均 60.5 と出したいのですが下のプログラムでは出ませんなぜでしょうか? <HTML> <HEAD> <TITLE>for文例問題1</TITLE> </HEAD> <BODY> <table border> <?php $ary1 = array(44,55,66,77); for($i=0;$i<4;$i++) { $a = 44+55+66+77/4; <tr><th>値 $i</th>    <td>44</td></tr> <tr><th>値 $i</th>    <td>55</td></tr> <tr><th>値 $i</th>    <td>66</td></tr> <tr><th>値 $i</th>    <td>77</td></tr> <tr><th>件名</th> <td> $i件</td></tr> <tr><th>平均</th> <td> $a件</td></tr> </table> } ?> </BODY> </HTML> ご存知の方どうか助言お願いします

    • ベストアンサー
    • PHP
  • DOM? tableの記述について

    よろしくお願いします。 tbody内をループさせて表示させるスクリプトを作ってみました。 ここで質問なのですが、表示内容を横にできるのでしょうか? イメージとしては・・ A01 A02 A03 B01   B02 B03 を以下のように A01 B01 A02 B02 A03 B03 no のようにしたいのです。 ただのHTMLなら <html> <head> <title>test</title> </head> <body> <table border=0> <tr> <td> <table border=0> <tr><td>A01</td></tr> <tr><td>A02</td></tr> <tr><td>A03</td></tr> </table> </td> <td> <table border=0> <tr><td>B01</td></tr> <tr><td>B02</td></tr> <tr><td>B03</td></tr> </table> </td> </tr> </table> </body> </html> みたいな感じでできると思うんですが、以下のソースだと どうしても表示されなくなります。どこをどうすると よろしいでしょうか?どうかよろしくお願いします。 ------------------------------------------------- <html> <head> <title>TABLE TEST</title> <script> function tsample() { var mybody=document.getElementsByTagName("body").item(0); mytable = document.createElement("TABLE"); mytr = document.createElement("TR"); mytablebody = document.createElement("TBODY"); for(j=0;j<4;j++) { mycurrent_row=document.createElement("TD"); mytablet =document.createElement("TABLE"); for(i=0;i<3;i++) { mycurrent_cell=document.createElement("TR"); mycurrent_cen=document.createElement("TD"); currenttext=document.createTextNode("NO "+j+" LNO "+i+" "); mycurrent_cen.appendChild(currenttext); mycurrent_cell.appendChild(mycurrent_cen); } mycurrent_row.appendChild(mytablet); mytablebody.appendChild(mycurrent_row); } mytable.appendChild(mytablebody); mybody.appendChild(mytr); mybody.appendChild(mytable); mytable.setAttribute("border","2"); } </script> </head> <body onload="tsample()"> </body> </html>

  • Javaと言うより、for文の長さの問題なのですが……

    <%@ page language="java" contentType="text/html; charset=Shift_JIS" import="java.util.*"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>カレンダー</title> </head> <body> <% //カレンダーオブジェクトを生成する Calendar myCal = Calendar.getInstance(); //年月日を取得する int year = myCal.get(Calendar.YEAR); int month = myCal.get(Calendar.MONTH) + 1; if (request.getMethod().equals("POST")) { year = Integer.parseInt(request.getParameter("yyyy")); month = Integer.parseInt(request.getParameter("mm")); } //年月選択リストを表示する out.println("<form method='POST' action='Calendar2.jsp'>"); out.println("<table><tr><td>"); //年 out.println("<select name='yyyy'>"); for (int i = 2000; i <= 2020; i++) { out.println("<option"); if (i == year) { out.println(" selected "); } out.println(">" + i); } out.println("</select>年"); //月 out.println("<select name='mm'>"); for (int i = 1; i <= 12; i++) { out.println("<option"); if (i == month) { out.println(" selected "); } out.println(">" + i); } out.println("</select>月"); out.println("</td>"); out.println("<td><input type='submit' value='更新'></td>"); out.println("</tr></table></form>"); //カレンダーを表示する out.println("<table border='1'>"); out.println("<tr>"); out.println("<td>日</td>"); out.println("<td>月</td>"); out.println("<td>火</td>"); out.println("<td>水</td>"); out.println("<td>木</td>"); out.println("<td>金</td>"); out.println("<td>土</td>"); out.println("</tr>"); //1日の曜日を取得する myCal.set(year, month - 1, 1); int dw1 = myCal.get(Calendar.DAY_OF_WEEK); //末日を取得する int lastd = myCal.getActualMaximum(Calendar.DAY_OF_MONTH); //表示する日付を初期化する int day = 0; //1日から末日まで日付を表示する 添付したcalendar.jspなのですが、ずばりココ↓の部分なのですが、 for (int i=0; i<=5; i++) { ここで最大は5以下になっているのですが、そうすると1列多くならないでしょうか。 これだと行数が6つになりますよね。 曜日のセルはその前に作っているので、曜日だけが入るのですから5行でいいと思うのですが、自分の考えは間違っているのでしょうか。 宜しくお願い致します。 for (int i = 0; i <= 5; i++) { if (day >= lastd) {break;} out.println("<tr>"); for (int j = 0; j <= 6; j++) { day = i * 7 + j - dw1 + 2; if (day > lastd || day < 1) { out.println("<td> </td>"); } else { out.println("<td>" + day + "</td>"); } } out.println("</tr>"); } out.println("</table>"); %> </body> </html>

    • ベストアンサー
    • Java
  • Javaと言うより、for文の長さの問題なのですが……

    <%@ page language=\"java\" contentType=\"text/html; charset=Shift_JIS\" import=\"java.util.*\"%> <!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"> <html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\"> <title>カレンダー</title> </head> <body> <% //カレンダーオブジェクトを生成する Calendar myCal = Calendar.getInstance(); //年月日を取得する int year = myCal.get(Calendar.YEAR); int month = myCal.get(Calendar.MONTH) + 1; if (request.getMethod().equals(\"POST\")) { year = Integer.parseInt(request.getParameter(\"yyyy\")); month = Integer.parseInt(request.getParameter(\"mm\")); } //年月選択リストを表示する out.println(\"<form method=\'POST\' action=\'Calendar2.jsp\'>\"); out.println(\"<table><tr><td>\"); //年 out.println(\"<select name=\'yyyy\'>\"); for (int i = 2000; i <= 2020; i++) { out.println(\"<option\"); if (i == year) { out.println(\" selected \"); } out.println(\">\" + i); } out.println(\"</select>年\"); //月 out.println(\"<select name=\'mm\'>\"); for (int i = 1; i <= 12; i++) { out.println(\"<option\"); if (i == month) { out.println(\" selected \"); } out.println(\">\" + i); } out.println(\"</select>月\"); out.println(\"</td>\"); out.println(\"<td><input type=\'submit\' value=\'更新\'></td>\"); out.println(\"</tr></table></form>\"); //カレンダーを表示する out.println(\"<table border=\'1\'>\"); out.println(\"<tr>\"); out.println(\"<td>日</td>\"); out.println(\"<td>月</td>\"); out.println(\"<td>火</td>\"); out.println(\"<td>水</td>\"); out.println(\"<td>木</td>\"); out.println(\"<td>金</td>\"); out.println(\"<td>土</td>\"); out.println(\"</tr>\"); //1日の曜日を取得する myCal.set(year, month - 1, 1); int dw1 = myCal.get(Calendar.DAY_OF_WEEK); //末日を取得する int lastd = myCal.getActualMaximum(Calendar.DAY_OF_MONTH); //表示する日付を初期化する int day = 0; //1日から末日まで日付を表示する 添付したcalendar.jspなのですが、ずばりココ↓の部分なのですが、 for (int i=0; i<=5; i++) { ここで最大は5以下になっているのですが、そうすると1列多くならないでしょうか。 これだと行数が6つになりますよね。 曜日のセルはその前に作っているので、曜日だけが入るのですから5行でいいと思うのですが、自分の考えは間違っているのでしょうか。 宜しくお願い致します。 for (int i = 0; i <= 5; i++) { if (day >= lastd) {break;} out.println(\"<tr>\"); for (int j = 0; j <= 6; j++) { day = i * 7 + j - dw1 + 2; if (day > lastd || day < 1) { out.println(\"<td> </td>\"); } else { out.println(\"<td>\" + day + \"</td>\"); } } out.println(\"</tr>\"); } out.println(\"</table>\"); %> </body> </html>

    • ベストアンサー
    • Java
  • for文の組み合わせ方 [2]

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=2460708 の関連質問になります。 最初に前回コメントいただけた方にお礼申し上げます。 前回お伺いした方法で、 $sql="SELECT ID,ITEMNAME FROM ITEM ORDER BY ID"; $msql="SELECT SHOPID,SHOPNAME,ITEMNAME,IF(L.ITEM=A.ITEMID,'○','') FROM (SELECT I.ID AS ITEMID,S.ID AS SHOPID,SHOPNAME,ITEMNAME FROM ITEM I, SHOP S) AS A LEFT OUTER JOIN LINK L ON L.ITEM = A.ITEMID AND A.SHOPID = L.SHOP ORDER BY SHOPID,ITEMID"; でデータを取得し、 下記で行列に店名と商品を表示する事ができました。 $in = mysql_query($sql,$db) $in2 = mysql_query($msql,$db) $ln = mysql_num_rows($in); $ln2 = mysql_num_rows($in2); print("<TABLE border=1>"); print("<TR>"); print("<TD>"); print("</TD>"); for($i=0;$i<$ln;$i++) { $lw = mysql_fetch_row($in); print("<TD>".$lw[1]."</TD>"); } print("</TR>"); print("<TR>"); for($i=0;$i<$ln2;$i++) { $lw2 = mysql_fetch_row($in2); print("<TD>".$lw2[1]."</TD>"); //○を付ける処理 //print("<TD>".$lw2[3]."</TD>"); print("</TR>"); } print("</TABLE>"); ただ「SHOPIDが変わったら改行」という処理方法がわからずの状態になっています。 IF文で○じゃなければ<TD></TD>を埋め込む?などと思いやってみましたが やり方がおかしいのかうまくいっていません。 値の比較方法と、それをどのように組み込めばいいかコメントお願いします。 ※併せてですが、この後このPHPで作成された表をCSVに出力したいのですが、可能でしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう