如果变量为 null
,你可以使用三元运算符(ternary operator)或 null
合并运算符(null coalescing operator)来将其设置为其他值。以下是两种方法的示例:
使用三元运算符
$value = $variable ?? 'default_value';
在这个例子中,如果 $variable
是 null
,$value
将被赋值为 'default_value'
。如果 $variable
不为 null
,则 $value
将被赋值为 $variable
的值。
使用完整的三元运算符
$value = isset($variable) ? $variable : 'default_value';
这个表达式检查 $variable
是否已设置且不为 null
。如果是,则 $value
被赋值为 $variable
的值;否则,它被赋值为 'default_value'
。
在复杂的逻辑中使用三元运算符
如果你需要进行更复杂的检查,你可以扩展三元运算符的逻辑:
$value = ($variable !== null && $variable !== 'some_unwanted_value') ? $variable : 'default_value';
在这个例子中,只有当 $variable
既不为 null
也不为 'some_unwanted_value'
时,$value
才会被赋值为 $variable
的值。否则,它会被赋值为 'default_value'
。
使用 null
合并运算符和条件语句结合
你还可以先使用 null
合并运算符设置一个默认值,然后再使用条件语句来进一步处理这个值:
$value = $variable ?? 'default_if_null';
if ($value === 'default_if_null' && some_other_condition()) {
$value = 'another_default_value';
}
在这个例子中,如果 $variable
是 null
,$value
最初会被设置为 'default_if_null'
。然后,你可以根据其他条件进一步修改 $value
的值。
选择哪种方法取决于你的具体需求和代码的可读性。通常,null
合并运算符更简洁,适用于简单的默认值设置。对于更复杂的逻辑,可能需要使用完整的三元运算符或结合条件语句。
示例:判断是否是https协议
$protocol = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';