PHP7 语法“??” 和“?:”的区别
- $a ?? 0 等同于 isset($a) ? $a : 0
-
- $a ?: 0 等同于 $a ? $a : 0
-
- empty: 判断一个变量是否为空(null、false、00、0、’0′、』这类,都会返回true)
-
- isset: 判断一个变量是否设置(值为false、00、0、’0′、』这类,也会返回true)
-
示例
- // 定义之前
- print_r($name ?? 'Tom');
- // Tom
-
- print_r($name ?: 'Jack');
- // Jack
- // Undefined variable: name
-
-
- // 定义之后
- $name = '';
-
- print_r($name ?? 'Tom');
- // ''
-
- print_r($name ?: 'Jack');
- // Jack
-
当变量 $a 已定义,bool值为false的时候
- $a = 0;
- $b = 1;
-
- var_dump($a ?? $b); // int(0)
- var_dump(isset($a) ? $a : $b); // int(0)
-
- var_dump($a ?: $b); // int(1)
- var_dump($a ? $a : $b); // int(1)
-
当变量 $a 未定义的时候
- $b = 1;
-
- var_dump($a ?? $b); // int(1)
- var_dump(isset($a) ? $a : $b); // int(1)
-
- var_dump($a ?: $b); // PHP Notice: Undefined variable: a
- var_dump($a ? $a : $b); // PHP Notice: Undefined variable: a
-
PHP7中的运算符 ?: 和 JavaScript 中运算符|| 作用基本一致,都是三元运算符的简写
- console.log(true ? true : false) // true
-
- console.log(true || false) // true
- console.log(false || true) // true
- console.log(0 || 1) // 1
- console.log("" || "Tom") // Tom
-
-