論理演算子 (Logical Operators)

演算子

and, or, xor, !, &&, ||

短絡評価 (short-circuit)

変数が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;

とします。

PHPのマニュアルから検索