如果值不存在,则设置值

3

如果在PHP中需要设置值但这些值不存在,最佳的方法是什么?

使用 isset() 函数来判断一个变量是否已经被定义是安全的。

$color = $option['color'] ?: 'blue';

与其

$color = isset($option['color']) ? $option['color'] : 'blue';

还有更好的方式吗?

1
注意,它们不是相同的! - Ron van der Heijden
1
请避免问“做X的最佳方法”的观点问题,而是说明你在解决方案中寻找什么。是“最简洁”还是“更少错误”? - k0pernikus
它被称为 "空合并运算符"。 - Martijn
对于这个特定的例子,$color = $option['color'] || 'blue' 不会是相同的吗? - Toni Michel Caubet
2个回答

10

在 PHP 7 中您现在可以使用 Null 合并运算符

$color = $option['color'] ?? 'blue';

这与 PHP5 中的代码是相同的:

$color = isset($option['color']) ? $option['color'] : "blue";

我已经了解这种方法,但我仍在寻找一种适用于PHP7以下版本的安全方式。 - Taimur Aziz
2
它不是与 $color = $option['color'] ? $option['color'] : "blue"; 相同吗?主要区别在于当第一个参数是函数时。 - Martijn
2
@Martijn,使用$color = $option['color'] ? $option['color'] : "blue"; 你正在测试变量是否包含真值,而isset检查变量是否已设置。 - Oli Crt
1
@TaimurAziz 那么最安全的方法是使用 $color = isset($option['color']) ? $option['color'] : "blue"; - Oli Crt

1
两者是相同的,但是$color = isset($option['color']) ? $option['color'] : 'blue';可以避免PHP警告异常。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接