エルビス演算子とNull合体演算子の違い
エルビス演算子は、条件値がfalseとみなされる値の場合、後者の値が式の結果となります。
Null演算子は、条件値がnullの場合、後者の値が式の結果となります。
$v1 = '';
$v2 = null;
$v1 ?: false; // false
$v1 ?? false; // ""
$v2 ?: false; // false
$v2 ?? false; // false
falseとみなされる値(php.netより)
boolean に変換する場合、次の値は FALSE とみなされます。
- boolean の FALSE
- integer の 0 および -0 (ゼロ)
- float の 0.0 および -0.0 (ゼロ)
- 空の文字列、 および文字列の "0"
- 要素の数がゼロである 配列
- 特別な値 NULL (値がセットされていない変数を含む)
- 空のタグから作成された SimpleXML オブジェクト
警告: -1 は、他のゼロでない数と同様に (正負によらず) TRUE とみなされます。
以下、実験。文字列の0はfalseですが、文字列の0.0はtrueになります。
boolval(null); // false
boolval('null'); // true
boolval("null"); // true
boolval(0); // false
boolval('0'); // false
boolval("0"); // false
boolval(''); // false
boolval(""); // false
boolval(0.0); // false
boolval('0.0'); // true!!
boolval("0.0"); // true!!
boolval(false); // false
boolval('false'); // true
boolval("false"); // true