更新:
PHP 7 引入了一个新特性:空合并运算符
这是来自 php.net 的示例。
<?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';
?>
对于那些还没有使用 PHP7 的人来说,这是我原来的答案......
我使用一个小功能来实现这一点:
function ifset(&$var, $else = '') {
return isset($var) && $var ? $var : $else;
}
例子:
$a = 'potato';
echo ifset($a); // outputs 'potato'
echo ifset($a, 'carrot'); // outputs 'potato'
echo ifset($b); // outputs nothing
echo ifset($b, 'carrot'); // outputs 'carrot'
警告:正如 Inigo 在下面的评论中指出的那样,使用此函数的一个不良副作用是它可以修改您正在检查的对象/数组。例如:
$fruits = new stdClass;
$fruits->lemon = 'sour';
echo ifset($fruits->peach);
var_dump($fruits);
将输出:
(object) array(
'lemon' => 'sour',
'peach' => NULL,
)