条件分岐の制御構文で代表的なのが、if構文です。if構文では、最初に式を評価し、その条件を判断して処理スクリプトを実行します。
}
このように、与えられた条件式の「真偽」を評価して、その結果によって剃りさせたいスクリプトに誘導します。
<?php
?>
もし、条件式で「false」と評価された場合、ブロック内の処理スクリプトは実行されません。しかしその場合、閲覧者がその結果を知ることができません。
ループを途中で抜けたい場合には、break文を使います。条件式だけでは指定できないループの脱出には便利な機能を持っています。
ただし、break文は、foreach 以外のループ制御構文に利用できます。foreach構文では不可となります。
<?php
?>
foreach構文は、PHP4 から実装された比較的新しい制御構文です。このループ制御では、指定した配列の要素を1つづつ抜き取って処理します。
}
少し分かりづらいと思いますが、配列を設定する場合に、$keyによって設定されたキーワードと共に格納されるインデックスと、$valueに格納されるインデックスとグループ化します。例えば、
<?php
?>
変数$aに格納された配列は、キーワードが「=>」によって2つの値を対にしてそれぞれを取り込んでいます。
foreach構文では、そのキーワードをもとにしてそれぞれの値を、変数$key、$valueにループしながら変換します。ループは、取り込まれたインデックスの数だけ行われます。
while、for構文は、式を最初に評価してから処理スクリプトを繰り返すループですが、do~while構文は、処理を最初に行ってから条件式を評価するという構文です。
}
この構文では、処理スクリプトは条件に関わらず最低1回は実行されることを理解できることでしょう。最初に処理したい場合のループに向いた制御構文です。
<?php
?>
この PHPスクリプトでは、最初に初期値となる変数と配列を用意し、それを do文で解釈して実行しています。処理が終わったら変数の増減式地を設定します。
ここでは、初期値として設定された変数 $aに 1を加えています。その後、while文によって変数の値を評価します。
もし、このような増減式を設定しなければ、非常に危険な「無限ループ」に陥り、閲覧者のリソースを著しく損なう結果となりますので、do~while構文を使う場合には、その点に十分注意してください。
基本的には、while構文と同じ繰り返し処理を行いますが、式の内容が異なります。
}
この構文は、JavaScriptの for構文 とまったく同じ公式です。初期値式には、ループを繰り返す前に必ず1回だけ実行され、その値に基づいて条件式で評価され、その値が「true」ならば、ブロック内の処理スクリプトを実行し、処理が終わったら増減式で初期値式の値を増やしたり減らしたりします。
つまり、ループに入る前に初期値式を実行し、条件式で評価します。評価した値が条件に合えば処理を行い、増減式を実行してから条件式に戻ります。条件がマッチしない場合には、ループを実行しません。
<?php
?>
この for構文では、初期値として変数$aに、1をセットしています。条件式では、$aが4を超えているかどうかを評価し、4以内であれば「true」と判断して、処理のスクリプトを実行します。処理後、$aの値に1を加えて、条件式を繰り返します。
PHPでは、ループを構成する4種類の制御構文が用意されています。
■ while構文
ループを制御する最もシンプルな構文が「while」です。whileは、その繰り返しのコードを実行する前に条件式を評価し、その式が満たされればループを抜けます。同時に、その式が最初から満たさなければ、ループを実行することがありません。
以下は、while構文の基本的な形です。
}
while構文は、if構文に似ており、式を評価してから、中カッコ[ ~ ] のブロックを実行します。言い換えれば、式にある条件を満たすことができなければ、ループを実行させることができません。
<?php
?>
この while構文の条件式は、変数$a の値が4を超えたときにループから抜けるように設定されています。このスクリプトでは配列で定義された5つのインデックスのうち、4つまでを Webブラウザに出力しています。
文字列データから、ある文字列を取り出して異なる別の文字列に変換することを「文字列の置換」と呼びます。PHPでは、こうした一連の置換作業を、str_replace()関数を利用します。
str_replace()関数は、
それぞれの文字列は変数でも可能です。以下はそのサンプルコードです。
<?php
?>
上記スクリプトの実行結果は以下のとおりです。
ご覧のように「ホームページ作り」という文字列だけを抜き取って「PHP入門」という異なる文字列に置換えた結果を表わしています。
変数に代入された文字列は、他の変数に代入された文字列を結合して、1つの文字列として扱うことが可能です。その場合、文字列変数を、ピリオド「 . 」、あるいはプラス「 + 」などの記号で結合します。
<?php
?>
上記スクリプトの実行結果は以下のとおりです。
2つの文字列変数を1つの文字列として変数に格納し、その結果を出力しています。連結する文字列変数の数に制限はありません。いくつでも結合することが可能です。
当講座では、このような文字列の連結には、基本的に「ピリオド」を使って解説します。
文字列は、変数の文字列 でも述べたとおり、ダブルコーテーション、シングルコーテーション、あるいはヒアドキュメントという3つの形で定義されます。
ダブルコーテーション "初心者のための PHP入門"
シングルコーテーション '初心者のための PHP入門'
ヒアドキュメント <<<初心者のための PHP入門
ヒアドキュメントは、先頭にキーワードを指定し、次にそのキーワードが出てくるまでの複数行の文字列を改行文字を含めて、1つの文字列として扱います。あまり一般的ではないので、通常は、ダブルおよびシングルコーテーションを用います。
文字列の中で「\n」とあるのは「改行」を意味し、本来ならば「バックスラッシュ」を書きたいところですが、残念ながらコンピュータから入力できないため、「\」と書きました。
実際に表示されるときに、改行されるという保証はありません。念のため。
なお、「\」を使った記述は、ダブルコーテションの中以外には使えません。シングルコーテーションで囲む場合には、「\\」と2つ続けて記述します。
文字列の中でダブルコーテーションなどを表示したい場合には 「\」をつけてエスケープしなければなりません。
以下が、エスケープ文字「\」を利用してダブルコーテーションを表示させた Webブラウザの出力結果です。
「PHP入門」の前後に引用符としてダブルコーテーションが表示されます。
エスケープ文字がない場合には、エラーとして画面に表示されます。
■ エスケープすべき文字
PHPでは、文字列データを表現するため、文字列に含まれる文字種の中にエスケープしなければならないものがあります。この場合、その文字の先頭で \ を記述します。
エスケープ文字種とその意味文字種
'
"
\
t
n
$
r
PHPのプログラムでは、幾つかの条件式が登場します。その条件式の中でも演算子が用いられ、一定の条件を作成します。その条件市の中で記述される演算子を「論理演算子」と呼びます。
論理演算子を組み立てることで、より複雑な条件式を結合することも可能です。論理演算子によって返される値は「true」、あるいは「false」になります。演算子
&&
||
and
or
xor
!
論理積、論理和は2通りありますが、論理演算子の優先順位として、&&、|| の方が高くなっています。スクリプト作成時には注意してください。