and, or, xor, !, &&, ||
変数がFALSEと等値の場合のみ初期化するには、
if( ! $a ) $a = 10;
のように書けますが、これを論理演算子を用いることで、
$a || $a = 10;
のようにも書けます。なおこれをJavaScriptでの短絡評価のように
$a = $a || 10;
とすると第二項は(10 == TRUE)
と評価した結果を返すため、意図した結果となりません。
$r1 = $a || 10; echo $r1 === TRUE? 1 : 0; // 1 echo $r1 === FALSE? 1 : 0; // 0 $r2 = $a || '0'; echo $r2 === TRUE? 1 : 0; // 0 echo $r2 === FALSE? 1 : 0; // 1 $r3 = $a || ''; echo $r3; echo $r3 === TRUE? 1 : 0; // 0 echo $r3 === FALSE? 1 : 0; // 1
定義されていない変数に対して、
$a || $a = 10;
とすると「Notice: Undefined variable: a」と通知されます。このように未定義であることが想定されるならば、先にisset()で確認するようにして、
isset( $a ) || $a = 10;
とします。