<?php echo (isset($var)) ?: $var; ?>
这个语法正确吗?如果 $var 不会被设置,空字符串或 null 会显示什么?用这个可以吗?
这个:
<?php echo (isset($var)) ?: $var; ?>
做同样的事情:
<?php
if (isset($var)) {
// do nothing
} else {
echo $var;
}
?>
因此,如果变量为空/空/等,则您正在尝试显示变量...
如果函数:
<?php $k= (cond ? do_if_true : do_if_false); ?>
$k
可能是新变量,echo
等
cond
- isset
, $z==$y
, 等等。
语法正确,用法不正确。在这里说:
$var = something();
echo $var ?: 'false';
这相当于:
$var = something();
if ($var) {
echo $var;
} else {
echo 'false';
}
或简写$var ? $var : 'false'
。
您的示例毫无意义,因为它输出isset($var)
( true
) if$var
设置的结果,$var
否则。
您需要echo isset($var) ? $var : null
or if (isset($var)) echo $var
,并且没有捷径。
代码没有意义,生成通知或回显 1,您无法打印未设置的 $var
语法很好。
如果 $var 被设置,那么它会输出,如果没有,它会抛出一个关于未设置的 $var 回显的通知。
如果你的 error_reporting 设置为 E_NONE 那么你只会看到一个白屏,如果设置了 $var 然后你会看到 $var 的值
这将回显 $var 任何一种方式。
从 PHP 5.3 开始,可以省略三元运算符的中间部分。表达式 expr1 ?:如果 expr1 的计算结果为 TRUE,则 expr3 返回 expr1,否则返回 expr3。
因此,如果设置了 $var,它会回显 $var(因为它的计算结果为 TRUE),如果它没有设置为任何值或计算结果为 false,那么您手动要求它回显 $var。
理想情况下,您想要:
(condition ? if_true_then_do_this : if_false_then_do_this)
简而言之,这变成
(condition ? ? false)
并且由于您在这两个地方都指定了 $var,因此无论哪种方式,您都会得到 $var。你要这个:
echo ($var?:"null");
不,这个语法不正确。
在回显时,所有变量都必须设置并正确格式化。
否则意味着开发人员不知道他们的变量来自哪里以及它们包含什么 - 一条直接的注入之路。
所以,正确的语法是
<?=$var?>
至于三元组——我不喜欢它们。
<?php (isset($var)) ? echo "" : echo $var; ?>
你可以用这个。