管理杂谈OA答疑ERP答疑教程搜索

PHP中问号的意义及用法


在PHP中,问号(?)可以在多个上下文中使用,具有不同的含义:

1. 三元运算符(Ternary Operator)

三元运算符是一种简洁的条件表达式语法,格式为:条件 ? 表达式1 : 表达式2。如果条件为真,则结果为表达式1的值;否则,结果为表达式2的值。

// 如果$a大于$b,$result为$a,否则为$b。
$result = ($a > $b) ? $a : $b;

2. 空合并运算符(Null Coalescing Operator)

PHP 7引入了空合并运算符??,用于检查变量是否存在并且非null,格式为:变量 ?? 默认值。如果变量存在且其值不为null,则返回其值;否则,返回默认值。

// 如果$_GET['user']存在且非null,返回$_GET['user']的值,否则返回'nobody'。
$username = $_GET['user'] ?? 'nobody';

3. 可选参数和返回类型声明(PHP 7.1+)

问号用在类型声明前,表示参数或返回值可以为null或该类型。

function test(?string $name): ?int {

    if ($name === null) {

        return null;

    }

    return strlen($name);

}

在这个例子中,?string表示$name参数可以是null或字符串类型,?int表示函数可以返回null或整数类型。

4. 合并赋值运算符(PHP 7.4+)

PHP 7.4引入了空合并赋值运算符??=,它是空合并运算符的赋值版本,用于只在左侧操作数为null时将值赋给它。

// 如果$array['key']未设置或为null,调用computeDefaultValue()并将其结果赋值给
$array['key']。$array['key'] ??= computeDefaultValue();

总结

问号?在PHP中是一个多功能的符号,根据上下文可以表示三元条件表达式、空合并运算符、可选类型声明的一部分,或者与PHP 7.4引入的空合并赋值运算符结合使用。


更多精彩文章浏览...
点击右上角图标分享到朋友圈
官方网站:http://www.clicksun.cn
咨询热线:400-186-1886
服务邮箱:service@clicksun.cn