• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPのfor文とforeach文の使い方)

修正方法:PHPのfor文とforeach文を使った果物の繰り返し処理

noname#244856の回答

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

ループが止まらないのは比較じゃなくて代入になっているからです。 if (($i = 1) || ($i = 3)) { ↓ if (($i == 1) || ($i == 3)) { あと </br> じゃなくて <br> です。HTMLではなくXHTMLで書くにしても <br /> が正しいです。

dradra33
質問者

お礼

To_aru_Userさま さっそくのコメントありがとうございます。 代入演算子"="を、 比較演算子"=="に変えると、 意図通りの動きになりました! <br />も修正しておきます! アドバイス助かります!

関連するQ&A

  • forを使わずにforeach文のみでループを回す

    ○質問の主旨 先日、下記の質問をしました。 PHPのfor文とforeach文の使い方 http://okwave.jp/qa/q8812443.html この例では,for文とforeach文を使って、 ・果物の名前を4回繰り返す ・繰り返しの2回目と4回目は、"食べてください"という文字列を入れる というプログラムを実現しています。 今回は同じ出力をするにあたって、 繰り返しはforeachのみで実現したいと考えています。 どのように修正すればよろしいでしょうか? ご存知の方がいらっしゃいましたら、 ご教示を願います。 ○質問の補足 このようなプログラムにしたいと考えています。 $fruits = array("りんご", "ばなな", "ぶどう", "みかん"); foreach ($fruits as $value) { // 果物の名前を4回繰り返して2回目と3回目は"食べてください"を入れる if (($i == 1) || ($i == 3)) { echo "食べてください"; echo "<br/>"; }; echo $value; echo "<br/>"; } 完成イメージはこんな感じです。 (1回目のループ) りんご ばなな ぶどう みかん (2回目のループ) 食べてください りんご ばなな ぶどう みかん (3回目のループ) りんご ばなな ぶどう みかん (4回目のループ) 食べてください りんご ばなな ぶどう みかん ○前回のプログラム for($i = 0; $i < 4; $i++) { if (($i == 1) || ($i == 3)) { echo "食べてください"; echo "<br/>"; }; $fruits = array("りんご", "ばなな", "ぶどう", "みかん"); foreach ($fruits as $value) { echo $value; echo "<br/>"; } }

    • ベストアンサー
    • PHP
  • for文とforeach文について

    for文とforeach文の違いがわかりません。どちらもループ文なのですがどう使い分けるのでしょうか?

    • ベストアンサー
    • Perl
  • PHP foreach文

    PHPのforeach構文なのですが以下ソースコードの13行目、foreach文の中の「$juice」なのですが、どこから出てきた物なのでしょうか? 今PHPの参考サイトを見ながら学習という形をとっているのですが 「$juice」が何処から出てきた物かわかりません。 サブライムテキストのラインハイライトで掛けても見つからなかったので... 参考URL http://creive.me/archives/8719/ <html> <head><title>accesslog.php</title></head> <body> <?php $fruits_juice = array( 'orange' => 'orange juice', 'melon' => 'melon juice', 'grape' => 'grape juice', 'banana' => 'banana juice', 'strawberry' => 'strawberry juice' ); foreach ($fruits_juice as $fruit => $juice) { echo $fruit . "(果物) => " . $juice . "(ジュース)<br>"; } ?> </body> </html>

    • ベストアンサー
    • PHP
  • PHP CSVから条件にあう行を3行取りだしたい

    以下のようなCSVがあったとします。(data.csv)価格で降順にソートしてあります。 line0,line1,line2 1,ぶどう,200(円) 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) 5,みかん,50(円) ある果物を紹介するページがあったとして、 そのページには、他のオススメの果物として、csvからデータを読み込み、 その果物よりも安いもの3件を表示するという仕組みを作ろうと思っています。 ただ、安いものが3件無かった場合に、それよりも高いが、それに近い価格の果物を あわせて3件まで紹介したいと思っています。 今作っているPHPは以下の通りです。 ページに紹介されている果物=($fruits),価格=($price) です。 <?php $Data=file('/data.csv'); $j=0; for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); #表示ページの果物とCSVのline1が違い、価格が$priceよりも小さいものを3件まで表示 if($fruits != line1 and $price >= line2 and $j<3 ){     echo $line1 $line2.' </br>'; $j++; } } ?> で、価格が低いものを3件まで表示することはできました。 ぶどう200円のページであれば、 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) が表示されるようにはできました。 りんご100円のページには、 4,バナナ,80(円) 5,みかん,50(円) の2件のみが表示されています。 上記りんごのように、安いものが3件なかった場合に、 それより価格が高いが一番近いものから順に3件になるまでデータを 取りだしたいと思っています。 今回のりんごであれば、リンゴより安い、バナナ80円、みかん50円、 それに加え、リンゴより高いがリンゴの価格に一番近い、なし150円を表示させたいです。 みかんの場合には、安いものがないため、高いがみかんに近いものから3つ 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) を表示させたいです。 一体どうしたら良いのか、検討も付かず、教えて頂きたいです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • foreachがうまく動かない

    $fruits = array( array( "name" => "apple", "color" => "red", ... ), array( "name" => "banana", "color" => "yellow", ... ), ... ); foreach ($fruits as $fruit) { echo "名前:$fruit['name']<br \/>"; echo "色:$fruit['color']<br \/>"; ... } で、 名前:apple 色:red ... のように表示させたいのですが、きちんと動きません。 どこが間違っているのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • foreachの使い方

    foreach (split(/<br>/i,$text)){ #処理 } 今までこのようにforeachでループさせていたのですがxhtml形式に順次対応させていこうと改変中です <br>も旧データの中に残った状態なので、<br>と<br />の両方でループするようにしたいのですが、どう書けばいいでしょうか foreach ((split(/<br>/i,$text)) || (split(/<br />/i,$text))){ #処理 } これじゃあまずいですよね? 本来ならトライ&エラーあるのみですが、ループの中が複雑な上にいろんなところに散らばっているデータの書き換えもしてしまうのでテスト用に改変することも大変で、トライ&エラーをやるにも難しい状況なのでここはどうしても一発目で成功させたいのです。

    • ベストアンサー
    • Perl
  • for文でのデクリメント

    for文でデクリメントをして年号を昇順に表示しようとしています。 $year=""; for($i=date("Y");$i<=2000;$i--){ $year.=$i."<br>"; } echo "year=".$year."<br>"; としましたが 2009、2008、2007、2006、2005、2004・・・2000と表示されません。 どこが悪いでしょうか? 教えて下さい。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPとJSで同じNAME属性を使いたい場合の配列処理の記述

    さきほどのNO.1508009(チェックに応じて違うチェックボックスをアクティブにしたい)の件で、 HTMLファイルへのチェックボックス配置目的がPHPによる検索フォームとして利用することですが、 PHP側でSQLを発行するための配列の参照先にもなってしまっているため、実際のHTMLソースでは <INPUT TYPE="CHECKBOX" NAME="fruit" value="りんご">[a] りんご <INPUT TYPE="CHECKBOX" NAME="fruit" value="みかん">[b] みかん <INPUT TYPE="CHECKBOX" NAME="fruit" value="ぶどう">[c] ぶどう <INPUT TYPE="CHECKBOX" NAME="fruit" value="バナナ">[d] バナナ でなく、 <INPUT TYPE="CHECKBOX" NAME="fruit[]" value="りんご">[a] りんご <INPUT TYPE="CHECKBOX" NAME="fruit[]" value="みかん">[b] みかん <INPUT TYPE="CHECKBOX" NAME="fruit[]" value="ぶどう">[c] ぶどう <INPUT TYPE="CHECKBOX" NAME="fruit[]" value="バナナ">[d] バナナ とかかれています(NAME属性内に[])。なのでjchさんにご提示いただいた function check() { var v = document.kkk.food[0].checked; for(var i=0; i<3; i++){ if(v) { document.kkk.fruit[i].disabled = false } else { document.kkk.fruit[i].disabled= true; } } document.kkk.fruit[3].disabled= true; } を使わせてもらおうとすると不整合を起こしてしまいます。 かといって、安直に以下のようにかくと構文エラーになってしまいます。 document.kkk.fruit[][i].disabled = false ここでPHP側が使いたい配列表現を活かしつつ、jchさんのスクリプトも使いたい場合に 何かうまい書き方はありますでしょうか? よろしくお願い致します。

  • PHPでのFOR文について

    こんにちは質問させていただきます。 ------------------------------------ for ($i = 1;$i<100;$i++) { if ($i < 10) { ※break; } echo($i); } ----------------------------------- 上記のようなFor文で$iが10より小さい場合、 次の$iに焦点をあわせたいのですが、 breakではなくてnext(?)みたいなのはありますか? 結果としては10~99までを表示したいと考えています。 別の文でかくことができるのはわかりますが、 next(?)みたいなものはないかとおもいまして・・・ 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • foreach文の使い方を教えて下さい

    foreach文を使って表示させる時に、通し番号も一緒につけたいのですが方法がわかりません。 $msgをaaa,bbb,ccc,ddd,eeeとした時、 $msg_array = explode(",", $msg);//カンマ区切りでばらす foreach($msg_array as $message){ $comment = "コメント★【" .$message. "】<br>"; } echo "コメント一覧<br>" .$comment. "<br>ここまで\n"; という感じで書いてみましたが、★の部分に通し番号をつけて、 コメント一覧 コメント0【aaa】 コメント1【bbb】 コメント2【bbb】  (以下指定した数の分だけリピート) ここまで のように表示させたいのです。 $msgに渡した要素の数だけリピートされますが、通し番号も合わせて表示できないでしょうか? ○回分だけリピートする、という指定用に変数を増やしても構いません。 PHPはあまり詳しくなく、サンプルを少しずつ修正して使っている程度です(>_<) よろしくお願いします。

    • ベストアンサー
    • PHP