【问题标题】:In Reference to: "PHP: Limit foreach() statement?" How to add it to my Code参考:“PHP:限制 foreach() 语句?”如何将其添加到我的代码中
【发布时间】:2013-01-29 08:17:26
【问题描述】:

我找到了这个帖子PHP: Limit foreach() statement? 它谈论做我想做的事情,但我不确定如何编辑我的代码以及将其放置在哪里。谁能告诉我将代码放在哪里/如何编辑它以使其仅显示数组的 X 个数?

{~* Get Ads *~}
{~$ads2=array()~}
{~foreach $ads as $data~}
{~capture append="ads2"~}
{~if $data.code~}
<div>{~$data.code|decode~}</div><br />
{~else~}
<div><a rel="nofollow" href="{~$conf.path~}side/sideClick.php?spid={~$data.id~}" target="_blank">{~if $data.url~}<img src="{~$data.url~}" border="0" alt="{~$data.title~}" {~if $config->get('sideForce')~} width="120" height="60"{~/if~}>{~else~}{~$data.title~}{~/if~}</a></div>
{~/if~}
{~/capture~}
{~/foreach~}

{~* Advertise Here *~}
{~if !$config->get('sideNoFill') || $config->get('sideNoFill')=='2'~}

{~* Advertising Spots *~}
{~if $adsRows>=5 || $config->get('sideNoFill')=='2'~}
{~$rows=1~}
{~else~}
{~$rows=5-$adsRows~}
{~/if~}

{~* Advertising Text *~}
{~if $config->get('sideAds')=='image'~}
{~$adText="banner"~}
{~elseif $config->get('sideAds')=='text'~}
{~$adText="text link"~}
{~else~}
{~$adText="banner or text link"~}
{~/if~}

{~* Loop *~}
{~section loop=$rows name="sidePanel"~}
{~capture append="ads2"~}
<div><a href="{~$conf.path~}side/index.php">Your 120x60 {~$adText~} here, <br>As Low As 8 Cents Per Day!</a></div>
{~/capture~}
{~/section~}
{~/if~}

{~* Horizontal Ads *~}
{~if $horizontal>0~}
{~if count($ads2)~}
<table cellpadding="4" cellspacing="0" style="border:0px;width:100%;table-layout:fixed">
{~$i=1~}
{~foreach $ads2 as $data~}
  {~if $i==1~}
<tr valign="top">
  {~/if~}
<td>{~$data~}</td>
  {~if $i==$horizontal~}
    {~$i=1~}
</tr>
  {~elseif $data@last~}
<td colspan="{~$horizontal-$i~}"></td>
</tr>
  {~else~}
    {~$i=$i+1~}
  {~/if~}
{~if (++$i == 5) break;~}{~/if~}
{~/foreach~}
</table>
{~/if~}

{~* Vertical Ads *~}
{~else~}
{~foreach $ads2 as $data~}
<div>{~$data~}</div>
{~if !$data@last~}<br />{~/if~}
{~/foreach~}
{~/if~}

我试图弄乱它以找到放置它的位置,但我不断收到错误。

我正在使用垂直广告版本。 (上面显示了一个。)

我想限制正在显示的广告数量,因为现在它会一直显示所有广告,每次都以随机顺序出现。我希望它是相同的,除了只显示被拉动的前 X 个数,而忘记其余的告诉下一个负载。由于它们是按随机顺序出现的,所以它们都会显示出来,而不是同时显示。

【问题讨论】:

  • 哇,那些开/关标签让我的眼睛流血了。
  • 那不是 PHP。它是什么,为什么你还没有用火杀死它?
  • 用一根又长又尖的棍子戳它。
  • 我使伪代码阅读起来稍微不那么痛苦,但您应该考虑抽出相关部分并将其写得更简洁一些。伪代码可以很好地用于插图,但太多就是太多了!
  • 为什么要将默认的 smarty 开始和结束标记更改为难以阅读的内容?

标签: php arrays foreach smarty limit


【解决方案1】:

1) 您正在编辑 Smarty 模板代码,而不是 PHP 代码。这就是您链接到的代码不起作用的原因。虽然 Smarty 试图与 PHP 非常相似,但并不相同。

2) 您可以使用{break} 命令跳出循环。

{foreach $ads2 as $data}
  {if $data@index >= 2}
   {break}   
  {/if}
{/foreach}

3) 请您将该代码提交给http://thedailywtf.com/ 吗?

【讨论】:

  • 在哪里添加?我在此处添加了它... {~* 垂直广告 *~} {~else~} {~foreach $ads2 as $data~} {~foreach $ads2 as $data~} {~if $data@index > = 2~} {~break~} {~/if~} {~/foreach~}
    {~$data~}
    {~if !$data@last~}
    {~ /if~} {~/foreach~} {~/if~} 相同的图像连续显示 10 或 15 次。
  • 该死我明白了! LoL {~* 垂直广告 *~} {~else~} {~foreach $ads2 as $data~} {~if $data@index >= 2~} {~break~} {~/if~}
    {~$data~}
    {~if !$data@last~}
    {~/if~} {~/foreach~} {~/if~}
  • 您发布的那个网址是什么?
  • “那个 URL 是什么”“The Daily WTF,在 2007 年的大部分时间里也被称为“比失败更糟糕”,是一个致力于“信息技术中的奇怪变态”的幽默博客。博客,“提供活生生的代码示例,让人惊叹“WTF!?”和“讲述灾难性开发的故事,从项目管理变得非常糟糕到莫名其妙的编码选择。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多