作成日:2006/05/10
1G 式
PHPの式はC言語の式とほとんど同じ概念です。 PHPマニュアルによれば
「PHPは、ほとんど全てが式であるという意味で、式指向の言語です」と書かれています。 また、最も簡単で最も正確な式の定義は
「全ての式には値がある」とも書かれています。 この表現をC言語的に言うと「式は値を返す」となります。
PHPマニュアルでは、
「関数は、返り値を値とする式である」と説明しています。 この考えはC言語と逆で、C言語では式を関数と考えます。PHPは式指向、C言語は関数指向と言う図式です。 PHPでは式を最も重要な言語的要素と位置づけています。
C言語を関数指向でなく、手続き指向と呼ぶ人もいます。 これらの人は「式は値を返す」でなく「式は値を持つ」と表現するかもしれません。
PHPの式は、演算子とオペランドからなる列です。 式は評価され値を持もちます。また、式は評価の過程で副作用を伴う場合があります。
1G.1 代入式
代入式は最も良く使われる式です。式は値を持つので代入式は連続して書く事ができます。
用例:
$b=($a=1); // $a=1;$b=a$; と同じ $b= $a =1; // 上と同じ(演算子=は右結合)
1G.2 論理式
論理式は制御構造(if,while,forなど)の中で条件判定として使用されます。 また、論理式は代入式の右辺に現れる事もあります。
用例:
if($a==1) echo "Hello"; //($a==1)は論理式
$b = ($a==1); // $bは論理値を持つ if($b) echo "Hello";
1G.3 式の副作用
副作用とは、値を評価する過程で行われる変数の書き換えや入出力動作の事を言います。 厳密には代入演算自体も(代入という)副作用を伴います。 論理式は副作用なく記述できます。 教科書的には代入以外の副作用はなるべく排除するべきですが、副作用を期待したいくつかの慣例があります。
前置演算子(++,--)や後置演算子(++,--)は式を評価した後で副作用を伴います。
用例:
$a=1; $b=($a++); // $bは1、$aは2になります $b=(++$a); // $bは3、$aも3になります
C言語と同様に、代入式の結果を論理式で評価する技法は度々使用されます。
用例:
while ($file = readdir($handle)) { // 論理式の副作用($file)をループの中で使用します
$files[] = $file;
}
if ($i++){ // $iを論理評価した後、副作用としてインクリメントを期待します
・・・
}
上記以外にも、関数のパラメータに変数のリファレンスを渡して副作用を期待する例も良く見かけます。
