0
<?php echo (isset($var)) ?: $var; ?>

这个语法正确吗?如果 $var 不会被设置,空字符串或 null 会显示什么?用这个可以吗?

4

7 回答 7

2

这个:

<?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, 等等。

于 2013-03-04T15:46:20.983 回答
1

语法正确,用法不正确。在这里说:

$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 : nullor if (isset($var)) echo $var,并且没有捷径。

于 2013-03-04T15:47:27.940 回答
0

代码没有意义,生成通知或回显 1,您无法打印未设置的 $var

于 2013-03-04T15:47:07.623 回答
0

语法很好。

如果 $var 被设置,那么它会输出,如果没有,它会抛出一个关于未设置的 $var 回显的通知。

如果你的 error_reporting 设置为 E_NONE 那么你只会看到一个白屏,如果设置了 $var 然后你会看到 $var 的值

于 2013-03-04T15:48:10.190 回答
0

这将回显 $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");
于 2013-03-04T15:48:29.057 回答
0

不,这个语法不正确。
在回显时,所有变量都必须设置并正确格式化
否则意味着开发人员不知道他们的变量来自哪里以及它们包含什么 - 一条直接的注入之路。

所以,正确的语法是

<?=$var?>

至于三元组——我不喜欢它们。

于 2013-03-04T15:48:41.290 回答
0
<?php (isset($var)) ? echo "" : echo $var; ?>

你可以用这个。

于 2013-03-04T16:04:50.337 回答