php 双问号表达式 ?? 和 ?:

php两个问号 ??是php7新推出的表达式,

c = a ?? b;

表示如果a非空,则c = a,

如果a为空,则 c = b;

php7以前经常使用到三元运算表达式,

$page = isset($params['page']) ? $params['page'] : 1;

现在使用双问号表达式就行了

$page = $params['page'] ?? 1;

但是由于它是 isset,如果传递了空字符串,则导致 page 得到一个空字符串,如果希望为整数,且不为0,则不能使用 ?? ,而使用 ?:

$page = (int)$params['page'] ?: 1;

这里的 ?: 是php5.3的语法,也就是 $a ? $a : 1,是三元表达式的缩写。

简记: ?? 判断是否存在(不为null), ?: 判断是否为空。

一般来说,使用 ?: 赋默认值,如果允许传递空(比如 0或 空字符串),则使用 ?? 赋默认值。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注