在PHP中是否有任何类型的assign-if-not-empty-otherwise-assign-null函数?
我正在寻找一个更清洁的替代方案:
$variable = (!empty($item)) ? $item : NULL;
Run Code Online (Sandbox Code Playgroud)
如果我可以指定默认值,它也会很方便; 例如,有时我喜欢''而不是NULL.
我可以编写自己的函数,但有原生解决方案吗?
谢谢!
编辑:应该指出,我试图避免通知未定义的值.
Bol*_*ock 42
重新编辑:不幸的是,两者都在未定义的变量上生成通知.@我想,你可以反驳这一点.
在PHP 5.3中,您可以这样做:
$variable = $item ?: NULL;
Run Code Online (Sandbox Code Playgroud)
或者你可以这样做(正如梅加尔所说):
$variable = $item ? $item : NULL;
Run Code Online (Sandbox Code Playgroud)
否则没有,没有任何其他方式.
Pet*_*ter 38
PHP 7添加了一个新功能来处理这个问题.
对于需要将三元组与isset()结合使用的常见情况,已添加空合并运算符(??)作为语法糖.它返回第一个操作数(如果存在且不为NULL); 否则返回第二个操作数.
<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>
Run Code Online (Sandbox Code Playgroud)
我最终只是创建了一个解决问题的函数:
public function assignIfNotEmpty(&$item, $default)
{
return (!empty($item)) ? $item : $default;
}
Run Code Online (Sandbox Code Playgroud)
请注意,$ item 通过引用传递给函数.
用法示例:
$variable = assignIfNotEmpty($item, $default);
Run Code Online (Sandbox Code Playgroud)
??=如果您有可为空的参数值并且希望在其为空时设置默认值,则空合并赋值运算符 ( ) 会很有用。
function foo(?Bar $bar): void
{
$bar ??= new Bar();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26726 次 |
| 最近记录: |