简写如果在php上无法正常工作

时间:2014-05-23 12:45:17

标签: php conditional

我有一个非常简单的问题。这么简单,我不知道问题出在哪里。

for ($i = 1; $i <= 10; $i++)
{
    echo "<div id='field".$i."' ". $i > 5 ? "style='display:none'" : "" . ">Answer ".$i.": </div>\n";
}

我期望HTML结果将是:

<div id='field1' >Answer 1</div>
<div id='field2' >Answer 2</div>
<div id='field3' >Answer 3</div>
<div id='field4' >Answer 4</div>
<div id='field5' >Answer 5</div>
<div id='field6' display="none">Answer 6</div>
<div id='field7' display="none">Answer 7</div>
<div id='field8' display="none">Answer 8</div>
<div id='field9' display="none">Answer 9</div>
<div id='field10' display="none">Answer 10</div>

但我得到了这个结果:

>Answer 1</div>
>Answer 2</div>
>Answer 3</div>
>Answer 4</div>
>Answer 5</div>
>Answer 6</div>
>Answer 7</div>
>Answer 8</div>
>Answer 9</div>
>Answer 10</div>

如果我删除速记,如果一切正常。在这种情况下,我不能正常使用,但我只是好奇,在这种情况下我做错了什么?

更新:

在得到答案后,如果在括号中我应该用我的速记,我的工作代码是:

for ($i = 1; $i <= 10; $i++)
{
    echo "<div id='field".$i."' ". ($i > 5 ? "style='display:none'" : "") . ">Answer ".$i.": </div>\n";
}

谢谢!

另一个更新:

是的,我注意到10美元的错误。它是变量的位置,但是当我复制粘贴代码并将其更改为10以简化操作时,我想我忘了删除$。

4 个答案:

答案 0 :(得分:3)

我是三元运算符的粉丝,但是让它们可读(至少对我来说)是我使用的验证检查。如果我看不到或让他们做我想做的事,我会把它分成几行。我拥有它后看到代码的任何人都可能会在我们的呼吸下感谢我。

<?php

    for ($i = 1; $i <= 10; $i++)
    {
    echo "<div id='field".$i."' ";
    echo ($i > 5) ? "style='display:none'" : "";
    echo ">Answer ".$i.": </div>\n";
    }

?>

你花费这么多时间在一些简单的HTML输出代码上的事实可能意味着你太复杂了。

更多行的可读代码 BETTER 比没有人能理解或修改的更少的废话。

答案 1 :(得分:1)

问题是评估顺序的问题。要解决它,你可以用括号表示你的short-hand if表达式,如下所示:

echo "<div id='field".$i."' ". ($i > 5 ? "style='display:none'" : "" . ">Answer ".$i." : </div>\n");

答案 2 :(得分:1)

你可以这样做: LIVE DEMO

for ($i = 1; $i <= 10; $i++)
{
    echo "<div id='field".$i."'".($i > 5 ? " style='display:none' ": " ").">Answer ".$i.": </div><br>";
}

有关详情:PHP Shorthand If/Else Using Ternary Operators

答案 3 :(得分:0)

for循环$10中的

不是变量使用只需使用10常量和html操作问题 试试这段代码,

for ($i = 1; $i <= 10; $i++){
    echo $i <= 5 ? "<div id=\"field{$i}\" style=\"display:none\">Answer {$i}: </div>\n" : "<div id=\"field{$i}\">Answer {$i}: </div>\n";
}