我有一个非常简单的问题。这么简单,我不知道问题出在哪里。
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以简化操作时,我想我忘了删除$。
答案 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>";
}
答案 3 :(得分:0)
$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";
}