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