【发布时间】:2011-09-21 14:11:00
【问题描述】:
今天早些时候我尝试这样做:
示例 1:
<?php
echo $myVar || "rawr";
?>
我认为这可能会打印出$myVar 如果它已设置,如果没有设置则打印"rawr"。
它打印了一个1,我认为这是OR 测试的结果。
然后我尝试的是这样的:
示例 2:
<?php
if ($myVar)
{
echo $myVar;
}
else
{
echo "rawr";
}
?>
这是我想要完成的。
我想我明白为什么第一个会打印OR 测试的结果而不是其中一个变量,以及我为什么尝试它 - 最近花了一些时间在 bash shell 上:)
谁能告诉我是否有办法执行示例 #2 中的文本,但语法与示例 #1 相似?
【问题讨论】:
-
PHP 在这里是出了名的不优雅。在大多数情况下,这是通过
empty($var) ? "rawr" : $var完成的。 SO上有gazillions of questions处理empty的这种用法。 -
你的意思是像 echo (($myVar) ? $myVar : "rawr"); ?
-
@Jon - 坚持回答,我会标记为已接受,谢谢
-
@Jon "pup empty isset" 是吗? :P
-
@JonStirling:好吧,如果它只是
$myVar,那么您应该已经在您第一次将它引入符号表时将其设置为 some 值。如果它是数组的索引(如$_GET),那么您可以将其隐藏在函数中。