制御文

 これも、どの言語にも共通のものです。では、PHPでの用法を簡単に見て行きましょう。大体、C言語とよく似てますね(^^ゞ

if 文

 if 文は、条件を判定する事で処理の流れを変えることが出来ます。基本的な書式は以下の通りです。(式)がtrueであれば文を実行し、falseであれば無視します。

if (式)
  文;

 文が1つ以上の場合は大括弧{ }でくくります。

if (式) {
  文1;
  文2;
}

 if 文は上記のような単純なif 文だけでなく、if-else文も実行できます。この場合、(式)がtrueの時は文1が実行され、falseの時は文2が実行されます。

if (式) {
  文1;
} else {
  文2;
}

 これまでは条件式が1つだけでしたが、もう1つ条件を加える事も出来ます。条件式が2つある時は、if-elseif-else文を使います。この場合、(式1)がtrueの時は文1が実行され、falseの時は(式2)を評価します。(式2)がtrueの時は文2が実行されますが、falseの時は文3が実行されます。

if (式1) {  
  文1;  
} elseif (式2) { ←C言語では、「else if」と間を空ける。
  文2;  
} else {  
  文3;  
}  

 ここで、elseifの部分はいくつあっても構いません。つまり、条件文はいくつでも設定できると言う事です。尚、if 文は、他のif 文の中で無限に入れ子構造にする事が出来ます。

switch文

 switch文は、同じ変数を異なる値と比較し、値に応じて異なった文を実行したい場合に用います。書式は以下の通りです。

switch (変数) {  
  case 値1:  
    文1;  
    break; ←条件が一致した所で処理を終了させたい時に必要。
  case 値2:  
    文2;  
    break;  
  case 値3:  
    文3;  
    break;  
  ................  
  default: ←条件が一致するものがない場合、デフォルトの処理を提示する。
  文n;  
}  

 case式は、スカラー型に式を評価する任意の式、つまり、整数、浮動小数点、文字列とする事が出来ます。配列又はオブジェクトは、単純な型にキャストされていない限り使用する事が出来ません。

while文

 whileループは、PHPで最も簡単なタイプのループです。書式は以下の通りです。

while (式) 文;
以下も同じ。
while (式) {
  文;
}

 (式)がtrueの間、文を実行します。(式)が初めからfalseの場合は、文は1回も実行されません。

do...while文

 do...whileループは、論理式のチェックが各反復の最初ではなく最後に行われます。通常のwhileループとの主な差は、do...whileループは最低1回の実行を保証されている点です。書式は以下の通りです。

do {
  文;
} while (式)

 初めに文を実行し、式がtrueの間、文を実行します。

for文

 forループは、PHPで最も複雑なループです。書式は以下の通りです。

for (式1; 式2; 式3 ) 文;
又は、
for (式1; 式2; 式3 ) {
  文;
}

 式1は、ループ開始時に無条件で実行されます。各繰り返しの開始時に式2が評価され、その式の値がtrueの場合ループは継続され、括弧内の文が実行されます。式2がfalseの場合、ループの実行は終了します。各繰り返しの後、式3が実行されます。

 実際のスクリプトでは、ここの掲示板やチャットなどのように、ファイルに記録された書き込み記事を一行ずつ読み出して、ブラウザに順番に表示していく時などに使われています。又ご参照下さい。

foreach文

 PHP4の新機能には、Perlや他の言語によく似たforeach構文があります。これにより配列要素に関する反復処理が容易になります。この構造には以下の2種類があり、2番目の構文は最初の構文の便利な拡張になっています。

foreach ( array_expression as $value ) statment
            ↓便利な拡張型
foreach ( array_expression as $key => $value ) statment

 最初の形式は、array_expressionで指定した配列に関してループ処理を行います。各ループにおいて現在の要素の値が$valueに代入され、内部配列ポインタが1つ前に進められます。よって、次のループでは次の要素を見る事になります。以下に実際のプログラム例を見てみましょう。

<?php
$mem = array ("Yamada", "Suzuki", "Nakata");
foreach ( $mem as $val) {
  print $val . "<BR>";
}
?>
▼実行結果
Yamada
Suzuki
Nakata

 2番目の形式も同様ですが、各ループで現在の要素のキー(インデックス)が変数$keyに代入される所が異なります。こちらも、実際のプログラム例を見てみましょう。

<?php
$mem = array (
       "氏名" => "Yamada",
       "住所" => "岡山",
       "職業" => "会社員"
);
foreach ( $mem as $key => $val) {
  print $key . "=" . $val . "<BR>";
}
?>
▼実行結果
氏名=Yamada
住所=岡山
職業=会社員

多次元配列のforeach文

 次に、多次元配列を扱う場合の実際のプログラム例も見てみましょう。

<?php
$mem = array ("Yamada" => array (
       "住所" => "岡山",
       "年齢" => "25",
       "職業" => "会社員"),
    "Suzuki" => array (
       "住所" => "広島",
       "年齢" => "30",
       "職業" => "公務員")
    );
foreach ( $mem as $key => $val) {
  print "氏名:" . $key . "<BR>";
  foreach ( $val as $final_key => $final_val ) {
    print $final_key . ":" . $final_val . "<BR>";
  }
  print "<BR>";
}
?>
▼実行結果
氏名:Yamada
住所:岡山
年齢:25
職業:会社員
 
氏名:Suzuki
住所:広島
年齢:30
職業:公務員

break文

 break文は、switch文だけでなく、for、while、do...while文などでも、同じようにループ処理から強制的に抜け出る事が出来ます。

 break文は、breakに引数を渡す事でネストした任意のループから抜け出すことも出来ます。引数はbreak文から見たループのレベルです。以下に実際のプログラム例を見てみましょう。

<?php
$i = 0;
while (++$i) {
  switch ($i) {
  case 3:  ↓「\」は、エスケープシーケンスです。
    print "\$i = 3 でswitch文を抜けます。<BR>";
    break 1;
  case 5:
    print "\$i = 5 でswitch文とwhile文を抜けます。<BR>";
    break 2;
  default:
    break;
  }
}
?>
▼実行結果
$i = 3 でswitch文を抜けます。
$i = 5 でswitch文とwhile文を抜けます。

continue文

 continue文は、ループ構造において現在の繰り返しループの残りの処理をスキップして、次の繰り返しの最初から実行を続ける為に使われます。

 continue文では、break文と同様にオプションの引数で処理をスキップするループ構造のレベルの数を指定出来ます。

演算子 前へ

HOME

次へ require文とinclude文