Ext JSやRapid Driveなど
システム開発の技術情報をご紹介。

お問い合わせ 資料請求 無料見積り

お電話でお気軽にお問い合わせくださいTel 03-6805-2904 営業時間 [平日]AM 9:30 - PM 6:30

条件分岐とループ

条件分岐とループについて

繰り返す- (3)

3つの式で条件を指定するfor

for文では、3つの式を組み合わせて条件を指定します。式の間には「;(セミコロンで)」区切りをつけます。

3つの式を組み合わせて条件を評価
<?php
for( $i = 1; $i < 6; $i++ ) {

    echo "$i 回目のループです。<br />n";
}
?>
実行結果
1 回目のループです。
2 回目のループです。
3 回目のループです。
4 回目のループです。
5 回目のループです。

上記のスクリプトでは、for( $i = 1; $i < 6; $i++ )でwhile文で記述されていた、$i = 1;や$i++がまとめられて記述されているのがわかります。

for文では3つの式を組み合わせて条件を指定することができるので、コード行の長さ自体を短縮できるというメリットがあります。

なお、ループ処理で1ずつ加算していくカウンターには、慣習として「$i」という名前の変数が使われます。ループが二重、三重に入れ子で作成される場合は、「$i」、「$j」、「$k」という順で変数名をつけることが慣習となっています。

ループが入れ子で作成される例(九九)
<?php
    for( $i = 1; $i <= 9; $i++ ) {

        for( $j = 1; $j <= 9; $j++ ) {

            echo "$i × $j = " . $i * $j . "<br />n";
        }
    }
?>
実行結果
1 × 1 = 1
1 × 2 = 2
1 × 3 = 3
・
・
・
9 × 7 = 63
9 × 8 = 72
9 × 9 = 81

繰り返す- (4)

foreach

foreach文は配列用のループ処理文です。for文との違いは、for文は配列のキーが飛び飛びの数値であったり、文字列(連想配列)であった場合にはループ処理をすることができませんが、foreach文は文字列(連想配列)などでもループ処理をすることができます。

foreach( 配列 as $value )
数字が飛び飛びのループ処理
<?php

// 配列を生成

    $a = array(

    100 => 1000,
    150 => 1500,
    200 => 2000

    );

    foreach( $a as $value ){
        echo $value."<br />n";
    }
?>
実行結果
1000
1500
2000

上記スクリプトでは、「array()」で配列を生成し、変数$aに代入しています。$valueには、1000、1500、2000などの値が割り当てられます。

foreachでの連想配列

foreach文での連想配列をみてみます。

連想配列
<?php

    $animal = array(

        "dog" => "犬",
        "cat" => "猫",
        "horse" => "馬"

    );

    foreach( $animal as $key => $value ){
        echo $key. ":" .$value."<br />n";
    }
?>
実行結果
dog:犬
cat:猫
horse:馬

上記のスクリプトでは、「array()」で変数$animalに配列として、「"dog" => "犬","cat" => "猫","horse" => "馬"」を代入しています。そして、「foreach( $animal as $key => $value )」で、変数$animalのキーと値を変数$keyと変数$valueにそれぞれ割り当て、ループ処理をしています。

foreach文での多次元配列

配列の要素に更に配列が格納されている配列を「多次元配列」と言います。多次元配列をforeach文で扱う場合には配列を入れ子にします。

多次元配列
<?php
    $food = array(
        "fruit" => array(
        "strawberry"=> "いちご",
        "peach" => "もも",
        "apple" => "りんご"
    ), // ,(カンマ) で区切る
        "vegetable" => array(
        "carrot" => "にんじん",
        "pumpkin" => "かぼちゃ",
        "onion" => "たまねぎ"
        )
    );

    foreach( $food as $key1 => $valu1 ){
        echo "「".$key1. "」<br />n";

      foreach( $valu1 as $key2 => $valu2 ){

          echo $key2. ":" .$valu2."<br />n";
      }
    }
?>
実行結果
「fruit」
strawberry:いちご
peach:もも
apple:りんご
「vegetable」
carrot:にんじん
pumpkin:かぼちゃ
onion:たまねぎ

上記のスクリプトでは、まず一番目の「array()」で「"strawberry"=> "いちご","peach" => "もも","apple" => "りんご"」が配列として生成され、同様に二番目の「array()」で「carrot" => "にんじん","pumpkin" => "かぼちゃ","onion" => "たまねぎ"」が配列として生成され、変数$foodに代入されます。配列を入れ子にする場合は、array同士の間を,(カンマ)で区切ります。

「foreach( $food as $key1 => $valu1 )」の「$food」には上記の入れ子された配列が入っており、その入れ子された配列からキーと値が割り当てられます。「$key1」には「fruit」と「vegetable」が、「$valu1」には「いちご」「もも」「りんご」「にんじん」「かぼちゃ」「たまねぎ」が入っています。「echo "「".$key1. "」n";」では変数$key1の中に入ってるキーが出力されます。

「foreach( $valu1 as $key2 => $valu2 )の」$valu1には上記で説明した値が入っており、「$key2」は「strawberry」「peach」「apple」「carrot」「pumpkin」「onion」が、「$valu2」には「いちご」「もも」「りんご」「にんじん」「かぼちゃ」「たまねぎ」が入っています。そしてそれらは、foreachで要素がある分だけ繰り返されています。