プロが教えるわが家の防犯対策術!

少し御無沙汰しております^^ めげづにほぼ毎日PHPを頑張っております。
 さて以下のプログラムで分からない部分のご解説のお願いで投稿いたしました。
<!DOCTYPE html>
<html>
<head>
<title>P132 Sample5-8 if文などと組み合わせる </title>
</head>
<body>

<?php

$ch = 0;

for($i=0; $i<5; $i++){
for($j=0; $j<5; $j++){
if(ch == 0){
print "<img src=\"{$ch}.jpg\"/>";
$ch = 1;
}
else{
print "<img src=\"{ch}.jpg\"/>";
$ch = 0;
}
}
print "<br/>\n";
}


?>

</body>
</html>
 以上のコードですが!今いち!の日光の手前です。
 質問ですが
    $ch = 1;は何の働きがあるのでしょうか

 以上教えていただけないでしょうか?
  よろしくお願いいたします。

質問者からの補足コメント

  • ご回答くださいまして誠にありがとうございました。
    A;ファイルの名前は、「0.jpg」と「1.jpg」です。
    ファイル名を以上に変えましたが、結果は同じでした。
    ファイル名が「0.jpg」と「1.jpg」と決まりがあるのでしょうか!?
    英数名でしたら、なんでもいいのじゃないのでしょうか?
    よろしくお願いいたします。

    No.3の回答に寄せられた補足コメントです。 補足日時:2016/02/11 20:26
  • 原因はよくわかりませんでしたが!今日
    再度、画像を0.jpgと1.jpgと入力し直したところ
     以下の画像のファイル名”無”の拡張子.JPGで交互に5行の5段の画像が出てきました。
     初めて画像が出てきましたので、少し爽快な気分になりました^^
    print "<img src=\"{$ch}.jpg\"/>";
    $ch = 1;
    }
    else{
    print "<img src=\"{ch}.jpg\"/>";
    うまくいった原因として、昨日プログラムを再度入力しなおしたからだと思います。

      補足日時:2016/02/14 12:03
  • さて、
    画像も無事に参考書通り出てくるようになりました。後はプログラムの動作の流れですが!
     まず
    $ch = 0; の変数での関連事項ではjpg画像名は0の●で、$ch = 1;の1の画像jpgは▲です。
    for($i=0; $i<5; $i++){ 行数のループを司るプログラム
     for($i=0; $j<5; $j++){ 列数のループを司るプログラム
    print "<img src=\"{$ch}.jpg\"/>";~の画像出力プログラムではif($ch == 0){~最初は0の●のjpg画像出てきて、次に$ch = 1;で▲のjpg画像出てくる。

     それで、次に
    else{
    print "<img src=\"{$ch}.jpg\"/>";
    $ch = 0; とすることで、再度●のjpgが呼び出されて、
    ループ範囲の画像が順番で現れる仕組みです。
     と結論付けました。

      補足日時:2016/02/14 14:02

A 回答 (5件)

>$ch = 1;は何の働きがあるのでしょうか



交互に表示する画像のうち、どっちを表示するのか?
という判別の為に使われるフラグです。
コードを順番に追いかけて脳内デバッグ(?)していけば判るでしょう。


が、掲示されたコードは期待した動作をしないと思われますが。
原因については何回か指摘されている箇所で、質問者さん自身が
「気をつける」と宣言された部分ですので理解されているハズです。
# 覚えていないのならば、ご自分の質問履歴を確認してくださいな。
同じことなんども付き合う気もないので、基本回答はスルーしていますけどね……。
まぁたまには…ってことで。
    • good
    • 4
この回答へのお礼

ご回答くださいまして誠にありがとうございました。
print "<img src=\"{$ch}Circle.jpg\"/>";
print "<img src=\"{$ch}triangle.jpg\"/>";
 を再度入力したところ、画像は出てきませんでしたが
エラー表示は消えて以下のように画像が緑の山の上に
 ■■■■■■
 ■■■■■■
 ■■■■■■
 ■■■■■■
 ■■■■■■
雲がある画像が25枚出てきました。
 なので、私が準備した画像とは違っております。
画像が交互に出すしくみに苦心しております。

お礼日時:2016/02/11 14:29

・typoに悩んでいる


・文法エラーの原因をつきとめられない
・ソースのフローを追いかけられない

ということであれば、統合環境を導入して、きちんとデバッグすると
無駄に悩む時間が少なくなると思いますよ
    • good
    • 0

No.1様へのお礼欄の内容について



> print "<img src=\"{$ch}Circle.jpg\"/>";
> print "<img src=\"{$ch}triangle.jpg\"/>";

この部分は質問欄でご提示のプログラムと違っていますよ。


>  を再度入力したところ、画像は出てきませんでしたが
> エラー表示は消えて以下のように画像が緑の山の上に
 ■■■■■■
 ■■■■■■
 ■■■■■■
 ■■■■■■
 ■■■■■■
> 雲がある画像が25枚出てきました。

恐らく理解されていないのだと推測しますが、
準備する画像ファイルの名前は、「0.jpg」と「1.jpg」です。
この回答への補足あり
    • good
    • 0

No.3です。



> ファイル名を以上に変えましたが、結果は同じでした。

プログラムを元通り(参考書に記載されているとおり)にしましたか?


> ファイル名が「0.jpg」と「1.jpg」と決まりがあるのでしょうか!?
> 英数名でしたら、なんでもいいのじゃないのでしょうか?

ファイル名が「0.jpg」と「1.jpg」の画像ファイルを使用するように、プログラムで記述しているからです。



そして、使用されている参考書のずいぶん前のページで、どうしてそうなるのかが説明されています。

というか、
今までのページに記載されていたプログラムのひとつ一つの動きを理解した上で先に進まれていせんよね?
記載されているプログラムを入力して、記載されているとおり動いたからOKじゃ、勉強になりませんよ。

もう一度参考書を最初から勉強しなおしてみては如何でしょう?
ご自身が幾度も書かれているように、繰り返しが大事です。
プログラムの一行一行の意味を完全に理解してから、次に進むべきです。
    • good
    • 1
この回答へのお礼

ご回答くださいまして真ありがとうございました。
 さて、ご指摘いただきました、通り、P120ページに戻り、Sample3の画像出てきていませんでしたのでNetBeans IDE 8.1で調べたところ、}のアンダーに”赤並み線”がありましたので、再度半角で入力をやり直して、JPG画像名を0~4として画像5枚を準備したところ、画像は画面いっぱいに出てきましたが、参考書の通りの動作はしています。

お礼日時:2016/02/14 12:17

とりあえずhtmlが表示されたら、ブラウザの機能でソースを表示してみましょうよ


imgでしたらsrcに表示された画像が本当にあるのかどうか確認すれば済むはずです
さすがにhtmlの内容ぐらい読めるでしょ?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!