这不起作用吗?或者我只是做错了?尝试了它的多种变体,似乎无法找到关于这个主题的任何可靠信息。任何想法?
$given_id = 1;
while ($row = mysql_fetch_array($sql))
{
if ($i < 10){
$display = '<a href="' . $row['info'] . '" onMouseOver="' . if($row['type']=="battle"){ . 'showB' . } else { . 'showA'() . "><div class="' . $row['type'] . "_alert" . '" style="float:left; margin-left:-22px;" id="' . $given_id . '"></div></a>';
答案 0 :(得分:38)
如果是一个自立的陈述。这就像一个完整的陈述。所以你不能在字符串连接之间使用它。 更好的解决方案是使用速记三元运算符
(conditional expression)?(ouput if true):(output if false);
这也可以用于字符串的连接。示例:
$i = 1 ;
$result = 'The given number is'.($i > 1 ? 'greater than one': 'less than one').'. So this is how we cuse ternary inside concatenation of strings';
您也可以使用嵌套的三元运算符:
$i = 0 ;
$j = 1 ;
$k = 2 ;
$result = 'Greater One is'. $i > $j ? ( $i > $k ? 'i' : 'k' ) : ( $j > $k ? 'j' :'k' ).'.';
答案 1 :(得分:7)
if..else
是语句,不能在表达式中使用。您想要的是“三元”?:
运算符:http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary。
答案 2 :(得分:3)
使用三元运算符?:
-
$display = 'start ' . (($row['type']=="battle")? 'showB' : 'showA') . ' end ';
请参阅http://php.net/manual/en/language.operators.comparison.php
上的“三元运营商”答案 3 :(得分:2)
if
是一个声明。人们不能将陈述放在表达式中。
$str = 'foo';
if (cond)
{
$str .= 'bar';
};
$str .= 'baz';