在 PHP 三元 shorthand 运算符中使用 isset() 时获取变量的值
Get value of variable when isset() is used in PHP ternary shorthand operator
在使用更短的三元运算符时:
$foo = isset($_GET['bar']) ?: 'hello';
如果设置了$_GET['bar']
,是否有可能$foo
到return $_GET['bar']
的值而不是true
?
编辑:我理解老派的三元作品,例如
$foo = isset($_GET['bar']) ? $_GET['bar'] : 'hello';
但我想使用更短的 newschool 三元组
是的,你会这样做
$foo = isset($_GET['bar']) ? $_GET['bar'] : 'hello';
像这样:
$foo = isset($_GET['bar']) ? $_GET['bar'] : 'hello';
我不确定我是否理解你的问题,但它是否类似于:
$foo = isset($_GET['bar']) ? true : 'hello';
如果设置了该变量,这将为您提供一个(真),如果未设置,则只提供 hello。
答案是否定的(至少在 PHP5 中,请参阅克里斯对 PHP7 的回答)。出于这个原因,我倾向于使用辅助函数,例如
function isset_or(&$variable, $default = NULL)
{
return isset($variable) ? $variable : $default;
}
$foo = isset_or($_GET['bar'], 'hello');
听起来你问的是新的(截至 PHP 7)null coalesce operator。你可以这样做:
$foo = $_GET['bar'] ?? 'hello';
echo $foo;
如果 $_GET['bar']
为 null 会将 $foo
设置为 hello
。
The first operand from left to right that exists and is not NULL. NULL if no values are defined and not NULL. Available as of PHP 7.
$foo = $_GET['bar'] ?? 'hello';
echo $foo . "\n";
$_GET['bar'] = 'good bye';
$foo = $_GET['bar'] ?? 'hello';
echo $foo;
输出:
hello
good bye
补充阅读:http://www.lornajane.net/posts/2015/new-in-php-7-null-coalesce-operator
在使用更短的三元运算符时:
$foo = isset($_GET['bar']) ?: 'hello';
如果设置了$_GET['bar']
,是否有可能$foo
到return $_GET['bar']
的值而不是true
?
编辑:我理解老派的三元作品,例如
$foo = isset($_GET['bar']) ? $_GET['bar'] : 'hello';
但我想使用更短的 newschool 三元组
是的,你会这样做
$foo = isset($_GET['bar']) ? $_GET['bar'] : 'hello';
像这样:
$foo = isset($_GET['bar']) ? $_GET['bar'] : 'hello';
我不确定我是否理解你的问题,但它是否类似于:
$foo = isset($_GET['bar']) ? true : 'hello';
如果设置了该变量,这将为您提供一个(真),如果未设置,则只提供 hello。
答案是否定的(至少在 PHP5 中,请参阅克里斯对 PHP7 的回答)。出于这个原因,我倾向于使用辅助函数,例如
function isset_or(&$variable, $default = NULL)
{
return isset($variable) ? $variable : $default;
}
$foo = isset_or($_GET['bar'], 'hello');
听起来你问的是新的(截至 PHP 7)null coalesce operator。你可以这样做:
$foo = $_GET['bar'] ?? 'hello';
echo $foo;
如果 $_GET['bar']
为 null 会将 $foo
设置为 hello
。
The first operand from left to right that exists and is not NULL. NULL if no values are defined and not NULL. Available as of PHP 7.
$foo = $_GET['bar'] ?? 'hello';
echo $foo . "\n";
$_GET['bar'] = 'good bye';
$foo = $_GET['bar'] ?? 'hello';
echo $foo;
输出:
hello
good bye
补充阅读:http://www.lornajane.net/posts/2015/new-in-php-7-null-coalesce-operator