PHP中能否通过OR运算符给变量设置多个可选取值?
错误原因
你写的$shippingCost = $selectedShipping['cost'] || null;不符合PHP语法逻辑:PHP中||是逻辑运算符,执行后只会返回布尔值true或false,不会返回第一个符合条件的表达式本身,自然得不到你期望的运费值或者null。另外如果$selectedShipping数组未定义或者不存在cost键,还会抛出未定义变量/未定义数组键的警告。
解决方案
- PHP 7及以上版本直接用**NULL合并运算符
??**即可,这是最适配你需求的写法:
$shippingCost = $selectedShipping['cost'] ?? null;
这个运算符会自动判断左侧的数组键是否存在且值不为null,满足条件就返回左侧的$selectedShipping['cost'],否则返回右侧的null,不会抛出未定义警告。
- 如果是PHP 5.x的旧版本,用
isset()配合三元运算符实现:
$shippingCost = isset($selectedShipping['cost']) ? $selectedShipping['cost'] : null;
- 如果你需要额外过滤空字符串、0、false这类“空值”,不是只判断值是否存在,可以用
empty()判断:
$shippingCost = !empty($selectedShipping['cost']) ? $selectedShipping['cost'] : null;
内容的提问来源于stack exchange,提问作者aceng juanda
相关产品推荐
相关产品推荐

