PHP 美しいループを出力したい

こんにちは。hirafujiです。8回目の投稿です。

昨夜は、新卒一同、社外の方々との交流会に参加してきました。
技術的な点ではわからないことも多かったですが、それでもやはり社外の方との交流から得るものは多かったです。
また機会があれば、積極的に参加していきたいと思います。

さて、今日のPHPでは、前回に引き続きfor文について勉強しました。
詳しい内容は以下の通りです。


【continue】
 残りの処理をスキップし、次のループの最初の処理から実行するための命令。

【break】
 強制的にループから抜け出すための命令。

【while文】
 for文と同じ様にループ処理を行うが、条件判定だけが行われる文。
 while文は、以下の様に記述します。

    while ( 条件式 ) {
     ループ中の処理
    }

 「条件式」が真の間は、「ループ中の処理」が繰り返されます。

【forのネスト】
 for文を入れ子状にすることにより、より複雑な処理をすることができるようになります。

例えば、以下のfor文からはどのような結果が出力されるでしょうか。

    echo ” 楽しい九九 \n \n ” ;

    for ( $i = 1 ; $i < 3 ; $i++ ) {
     echo $i . ” の段 \n ” ;
     for ( $j = 1 ; $j < 10 ; $j++ ) {
      echo $i . ” × ” . $j . ” = ” . $i * $j . ” \n ” ;
     }
     echo ” \n ” ;
    }

このfor文からは、以下のような結果が出力されます。

    楽しい九九

    1 の段
    1 × 1 = 1
    1 × 2 = 2
    1 × 3 = 3
    1 × 4 = 4
    1 × 5 = 5
    1 × 6 = 6
    1 × 7 = 7
    1 × 8 = 8
    1 × 9 = 9

    2 の段
    2 × 1 = 2
    2 × 2 = 4
    2 × 3 = 6
    2 × 4 = 8
    2 × 5 = 10
    2 × 6 = 12
    2 × 7 = 14
    2 × 8 = 16
    2 × 9 = 18

これは、新卒のuchiumiが書いたコードです。
どうですか?結果もコードも美しいと思いませんか?

私がこれと同じ結果を出力させようと思うと、こうなります。

    $num1 = 1 ;
    $num2 = 1 ;

    for ( $i = 1 ; $i <= 2 ; $i++ ) {
     for ( $ii = 1 ; $ii <= 9 ; $ii++ ) {
      echo $num1 . “×” . $num2 . “=” . $num1 * $num2 . “\n” ;
      $num2++ ;
     }
     $num1++ ;
     $num2 = 1 ;

    }

で、結果はこうなります。

     1×1=1
    1×2=2
    1×3=3
    1×4=4
    1×5=5
    1×6=6
    1×7=7
    1×8=8
    1×9=9
    2×1=2
    2×2=4
    2×3=6
    2×4=8
    2×5=10
    2×6=12
    2×7=14
    2×8=16
    2×9=18

美しくない><

とゆーかズレてる><

私も、美しいコードから美しい結果を出力できる人になりたいです!がんばります!

—-
(2008/04/22 18:31 muroi追記)
お待たせしました! 動画アップしました!
(part1)

(part2)

7 件のコメント so far »

  1. by hasumi, on 04.19.08 @ 12:10 PM

     

    おお、もうfor文を使いこなせるんですね!!九九が出力されるのおもろいですね。

    continueとかbreakに関しては、コードを書いていて必要になる機会も多いので、
    今のうちにサンプルコードの中で使っておいて、慣れておくと良いと思いますよ。

  2. by hirafuji, on 04.20.08 @ 10:27 PM

     

    >hasumiさん
    アドバイスありがとうございます!
    早速、continueとbreakも試してみようと思います。どんなコードにしようかな~…。
    こなせている…かどうかはわかりませんが、おかげさまで使えるようになってきました。やっぱりわかり始めると楽しいですね。

  3. by NT-3, on 04.21.08 @ 6:53 PM

     

    whileの引数に”1″を渡すと無限ループするのは教えてあるのかな?

  4. by hirafuji, on 04.22.08 @ 1:33 PM

     

    >nt-3さん
    コメントありがとうございます!
    それはまだ教わっていません。が、ちょっと試してみます!
    もし他にもあったら、ぜひ教えて下さい。よろしくお願いします!

  5. by NT-3, on 04.22.08 @ 7:49 PM

     

    いや、試すのはよろしくないです。
    無限ループっていうのはその名前の示す通りに”無限”にループする処理です。
    むしろ、PHPではやってはいけない処理です。

    詳しいことはどこかで補足しますよ……多分。

  6. by らいあ, on 04.22.08 @ 7:54 PM

     

    > hirafujiさん
    どうなるか実験するといいよ

    while (1) {
    echo “hello world \a \n”;
    }

  7. by hirafuji, on 04.23.08 @ 11:25 AM

     

    >らいあさん
    実験してみました。もう二度としません。(笑)
    アドバイスありがとうございます!今後ともよろしくお願いします!

    >NT-3さん
    すみません、せっかくアドバイスいただいたのに、好奇心に負けて試してしまいました・・・。
    試した結果、やるもんでないことだとわかりました。もう2度としません。(苦笑)
    アドバイスありがとうございました!今後とも色々教えて下さい。よろしくお願いします!

Comment RSS · TrackBack URI

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree