PHP7中的问号?与??有何不同?
- 内容介绍
- 文章标签
- 相关推荐
本文共计660个文字,预计阅读时间需要3分钟。
本文简要介绍PHP7中?与??的区别。
在PHP中,?和??都是空值合并运算符,用于处理变量可能为空的情况。但它们的使用场景和结果有所不同。
1. ?(三元运算符)
?是三元运算符,格式为:
condition ? value_if_true : value_if_false
当`condition`为真时,返回`value_if_true`;否则返回`value_if_false`。
在变量可能为空的情况下,可以使用?来处理:
$a=isset($b) ? $b : 'default';
这里,如果`$b`存在且不为空,`$a`将等于`$b`的值;否则,`$a`将等于`'default'`。
2. ??(空值合并运算符)
??是空值合并运算符,格式为:
$a ?? $b
当`$a`存在且不为空时,返回`$a`的值;否则返回`$b`的值。
在变量可能为空的情况下,可以使用??来处理:
$a=$b ?? 'default';
这里,如果`$b`存在且不为空,`$a`将等于`$b`的值;否则,`$a`将等于`'default'`。
总结:
- ?是三元运算符,用于根据条件返回不同的值。- ??是空值合并运算符,用于在变量可能为空的情况下返回默认值。
在实际应用中,可以根据具体需求选择使用?或??。希望对大家有所帮助。
本篇文章给大家介绍一下PHP7中的“?”与“??”的区别。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
$a = ''; // or 0 or false $b = $a ?? 'a'; // 此时会判断$a是否存在 $a不为null // 等价于 // $b = isset($a) ? $a : 'a'; // $b is '' or 0 or false $c = $a ?: 'a'; // 此时会判断$a的值 // $c is 'a'
$a = null; $b = $a ?? 'a'; // 此时$a为null // $b is 'a' $c = $a ?: 'a'; // $c is 'a'
$a = null; $b = 'b'; $c = $a ?? $b ?? 'c'; // 返回第一个有定义的值 // $c is 'b' $a = null; $b = null; $c = $a ?? $b ?? 'c'; // $c is 'c'
function getId(?int $id) { return $id; } // 参数为指定的整型或空值 getId(857); // 857 getId('857'); // 参数非整型 报错 getId(); // 参数空 报错 getId(''); // 参数非整型 报错 getId(0); // 0 getId(null); // null
function getId():?int { return 1; } // 返回值为指定的整型或空值 getId() // 1 function getId():?int { return null; } getId() // null function getId():?int { return '1'; } getId() // 返回非整型 报错
推荐学习:php视频教程
本文共计660个文字,预计阅读时间需要3分钟。
本文简要介绍PHP7中?与??的区别。
在PHP中,?和??都是空值合并运算符,用于处理变量可能为空的情况。但它们的使用场景和结果有所不同。
1. ?(三元运算符)
?是三元运算符,格式为:
condition ? value_if_true : value_if_false
当`condition`为真时,返回`value_if_true`;否则返回`value_if_false`。
在变量可能为空的情况下,可以使用?来处理:
$a=isset($b) ? $b : 'default';
这里,如果`$b`存在且不为空,`$a`将等于`$b`的值;否则,`$a`将等于`'default'`。
2. ??(空值合并运算符)
??是空值合并运算符,格式为:
$a ?? $b
当`$a`存在且不为空时,返回`$a`的值;否则返回`$b`的值。
在变量可能为空的情况下,可以使用??来处理:
$a=$b ?? 'default';
这里,如果`$b`存在且不为空,`$a`将等于`$b`的值;否则,`$a`将等于`'default'`。
总结:
- ?是三元运算符,用于根据条件返回不同的值。- ??是空值合并运算符,用于在变量可能为空的情况下返回默认值。
在实际应用中,可以根据具体需求选择使用?或??。希望对大家有所帮助。
本篇文章给大家介绍一下PHP7中的“?”与“??”的区别。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
$a = ''; // or 0 or false $b = $a ?? 'a'; // 此时会判断$a是否存在 $a不为null // 等价于 // $b = isset($a) ? $a : 'a'; // $b is '' or 0 or false $c = $a ?: 'a'; // 此时会判断$a的值 // $c is 'a'
$a = null; $b = $a ?? 'a'; // 此时$a为null // $b is 'a' $c = $a ?: 'a'; // $c is 'a'
$a = null; $b = 'b'; $c = $a ?? $b ?? 'c'; // 返回第一个有定义的值 // $c is 'b' $a = null; $b = null; $c = $a ?? $b ?? 'c'; // $c is 'c'
function getId(?int $id) { return $id; } // 参数为指定的整型或空值 getId(857); // 857 getId('857'); // 参数非整型 报错 getId(); // 参数空 报错 getId(''); // 参数非整型 报错 getId(0); // 0 getId(null); // null
function getId():?int { return 1; } // 返回值为指定的整型或空值 getId() // 1 function getId():?int { return null; } getId() // null function getId():?int { return '1'; } getId() // 返回非整型 报错
推荐学习:php视频教程

