【问题标题】:No content is displayed after </ div> in an else ifelse if中的</div>后不显示内容
【发布时间】:2014-07-10 23:20:17
【问题描述】:

(用谷歌翻译,对不起。)需要评估循环内的这个条件。如果为真,&lt;/ div&gt;(在外面打开)关闭,添加&lt;iframe&gt; 并重播循环。我的问题是,在关闭第一个 div 的“elsif”中,它没有显示以下内容。第一个“if”很完美。

<?php if($adcount == 8 and $bbb == 8 and $paged == 0) { ?>
    </div>
    <div id="adds-inner" class="col-md-12 col-sm-12">
        <iframe id="my_ad" src="/ad.html" scrolling="no" frameborder="0" style="width:100%;"></iframe>
    </div>
<?php } else if($adcount == 8 and $bbb == 8 and $paged > 0) { ?>
    <p> this is shown </ p> 
    </div>
    <p> Incredibly, this does not </ p> 
    <div id="adds-inner" class="col-md-12 col-sm-12">
        <iframe id="my_ad" src="/ad2.html" scrolling="no" frameborder="0" style="width:100%;"></iframe>
    </div>
<?php } else { ?>
    </div>
<?php } ?>

更新

问题是由于插件(无限滚动)配置错误,php 代码运行正常。感谢大家的支持,对错误深表歉意。

【问题讨论】:

  • 如果每个条件都以&lt;/div&gt; 开头,那么为什么要在每个条件块中放置&lt;/div&gt;?只需将 &lt;/div&gt; 取出并将其移至顶部,然后将 else { 也删除,因为它不再有用了。
  • 你说得对,我已经尝试了很多东西,但犯了这个错误。我已经变了。谢谢
  • @JorgeAdriánSolimanoInglese 我的回答解决了您的问题吗?如果是这样,请给它打勾。如果没有,请告诉我,我会帮助你。

标签: php html loops if-statement


【解决方案1】:

我认为问题不是你想的那样。正如@JoshfromQaribou 在此评论中所说,我们可以将&lt;/div&gt; 模式化为 if else 语句,因为无论逻辑如何都需要它。但问题似乎是你的 else if 语句从未被达成。如果没有看到完整的代码,我无法判断,但如果你只得到 &lt;/div&gt; 而不是其余的,那么该代码永远不会被访问,它会直接进入 else。

试试这个代码:

  </div> <?php #<----- See how I moved this out of each below. ?> 
<?php if($adcount == 8 and $bbb == 8 and $paged == 0) { ?>
  <br />First Condition<br />
  <div id="adds-inner" class="col-md-12 col-sm-12">
    <iframe id="my_ad" src="/ad.html" scrolling="no" frameborder="0" style="width:100%;"></iframe>
  </div>
<?php } else if($adcount == 8 and $bbb == 8 and $paged > 0) { ?>
  <br />Second Condition<br />
  <div id="adds-inner" class="col-md-12 col-sm-12">
    <iframe id="my_ad" src="/ad2.html" scrolling="no" frameborder="0" style="width:100%;"></iframe>
  </div>
<?php } else { ?>
    <br />No conditions met.<br />
<?php } ?>
Done with conditions.

我打赌你会得到“不满足条件。”。这可能是因为$paged 小于 0 或您的其他变量中的一个(或两个)不等于 8。

更新

通过您更新的代码,我可以看到您的else if 条件得到满足。这只显示您的一些 HTML 真的很奇怪。我不确定它是否会为你做任何事情,但试试这个重构的代码。简化代码可能会使问题更加明显。

  </div>
<?php if($adcount == 8 && $bbb == 8) { ?>
  <div id="adds-inner" class="col-md-12 col-sm-12">
    <iframe id="my_ad" src="<?php if($paged==0) echo "/ad.html" else if($paged > 0) echo "/ad2.html" ?>" scrolling="no" frameborder="0" style="width:100%;"></iframe>
  </div>
<?php } ?>

只需复制并粘贴到您的代码所在的位置即可。请勿进行任何更改。

【讨论】:

  • 感谢您的回答。代码太长在这里分享,只需要告诉你,如果你输入“elseif”......我修改了代码,所以你可以看到我检查了
【解决方案2】:

您是否尝试过 echo 您的 html 而不是将其放在那里。我发现有时使用这样的 html 会给我带来错误,所以我通常会回显并将 html 用单引号括起来。

【讨论】:

  • 为简单起见:您是在告诉 php 将某些内容输出到 html 文档,而不是一开始就将其放在 html 文档中。它还破坏了语法突出显示,并且没有理由 echo 一个完整的 HTML 文档和一个 PHP 部分。
  • “像那样使用 html”不会给您带来错误。您建议的方式会导致您制作像&lt;?php echo '&lt;div id="'.$divID.'"&gt;'.$divValue.'&lt;/div&gt;' ?&gt; 这样的丑陋php。你可以用双引号使它不那么难看,但你说单引号和不那么难看仍然比漂亮更难看。
  • 我猜各有各的
  • 我认为在 PHP(或 Ruby 等)花费更多时间之后,您会改变主意以这种方式进行操作。您可以按照自己的喜好进行操作。我只是想让您知道以正常方式进行操作是安全的(并且更常见)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 2020-02-15
相关资源
最近更新 更多