php中的一行if语句

时间:2014-01-12 17:53:36

标签: php if-statement

我想要一些类似于javascripts

的东西
    var foo = true;
    foo && doSometing();

但这似乎不适用于php。

如果条件满足,我正在尝试向标签添加一个类,为了便于阅读,我宁愿保持嵌入式php的最小化。

到目前为止,我已经得到了:

 <?php $redText='redtext ';?>
 <label class="<?php if ($requestVars->_name=='')echo $redText;?>labellong">_name*</label>
 <input name="_name" value="<?php echo $requestVars->_name; ?>"/>

但即便如此,我还是抱怨说我有一个带括号的if语句。

6 个答案:

答案 0 :(得分:21)

使用三元运算符?:

更改此

<?php if ($requestVars->_name=='')echo $redText;?>

   <?php echo ($requestVars->_name=='')?$redText:'';?>

简而言之

 // (Condition)?(thing's to do if condition true):(thing's to do if condition false);

答案 1 :(得分:2)

这样的东西?

($var > 2 ? echo "greater" : echo "smaller")

答案 2 :(得分:2)

您可以使用三元运算符逻辑 三元运算符逻辑是使用“(条件)?(真返回值):(假返回值)”语句来缩短if / else结构的过程。即

/* most basic usage */
$var = 5;
$var_is_greater_than_two = ($var > 2 ? true : false); // returns true

答案 3 :(得分:1)

我喜欢使用极简的 PHP 文本输出语法:

HTML stuff <?= $some_string ?> HTML stuff

(这与使用 <?php echo $some_string; ?> 的作用相同)

您也可以使用三元运算符:

//(condition) ? (do_something_when_true) : (do_something_when_false);
($my_var == true) ? "It's true" : "It's false ;

结局是这样的:

<?= ($requestVars->_name=='') ? $redText : '' ?>

答案 4 :(得分:0)

使用三元运算符:

echo (($test == '') ? $redText : '');
echo $test == '' ? $redText : ''; //removed parenthesis

但是在这种情况下,您不能使用较短的反向版本,因为它会在第一种情况下返回bool(true)

echo (($test != '') ?: $redText); //this will not work properly for this case

答案 5 :(得分:-6)

提供的答案是您的最佳解决方案,这也是我要做的,但是如果您的文本是通过函数或类方法打印的,您也可以执行与Javascript相同的操作

function hello(){
echo 'HELLO';
}
$print = true;
$print && hello();