是一种在不同地方回显相同数据的方法,而不需要多个 for eaches

因此,我从 json APi 中获取数据,并使用 foreach 将其回显到复杂的链接中。假设数据包括 -title -link -image

因此,第一个 foreach 将遍历数据并以某种格式将其回显,图像缩略图和可点击的标题都包裹在一个块中。

然后,在站点的其他地方,我需要使用相同的数据,但格式不同,我想看看是否可以在不使用多个 foreach 的情况下做到这一点。

首先,我需要检查标题是否可用,并返回 true 或 false,然后我需要再次列出标题,这次是纯文本,用逗号分隔,不包括我已经检查过的标题。

不确定这是否有意义,但代码看起来像这样

<?php 

 $neflix = false;

 $hulu = false;

 $amazon = false;

 foreach($sources as $source) {

      if ($source['source'] == "netflix"){$neflix = true;}

      if ($source['source'] == "hulu"){$hulu = true;}

      if ($source['source'] == "amazon"){$amazon= true;}

      echo '<a href="'.$source['link'].'" class="streaming-option">

            <img src="'. get_stylesheet_directory_uri()."/assets/images/sources/78x78/".$source['source'].'".png"/>

            <strong>'. $source['display_name'] .'</strong>

           </a>';

  }

这就是我到目前为止的第一个循环。我在 foreach 循环之外声明了初始标题,以便稍后在代码的其他地方使用它们,然后检查它们是否存在于循环内部,如果存在则将其设置为 true。


所以我只是想知道我是否需要设置一个完全不同的 foreach 循环,如果我想简单地在另一个部分中以文本格式列出相同的标题,用逗号分隔,而不是完整链接,并且不包括源在他们每个人中(我必须为每个人创建一个逗号分隔的列表,上面示例中的 hulu 和 netflix 和 amazon)


我想第二部分看起来像这样


<?php

if($netflix == true) {

echo "Yes, Netflix is available, it is also available in ";

foreach($sources as $source) {

      if ($source['source'] != "netflix") {

      echo $source['display_name'].", ";


     }

   }

}

为 Hulu、亚马逊等做同样的事情。我真的希望有一种更清洁的方法来做到这一点。


Qyouu
浏览 53回答 1
1回答

慕姐8265434

您可以在变量中收集所需的数据,然后将变量回显到所需的部分。我将尝试使用您的代码。&nbsp;<?php&nbsp;&nbsp;$neflix = false;&nbsp;$hulu = false;&nbsp;$amazon = false;&nbsp;$holderNetflix = [];&nbsp;$holderHulu = [];&nbsp;$holderAmazon = [];&nbsp;foreach($sources as $source) {&nbsp; &nbsp; &nbsp; if ($source['source'] == "netflix"){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $neflix = true;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array_push($holderNetflix,$source['display_name']); // collecting data&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; if ($source['source'] == "hulu"){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $hulu = true;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array_push($holderHulu,$source['display_name']);&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; if ($source['source'] == "amazon"){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$amazon= true;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;array_push($holderAmazon,$source['display_name']);&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; echo '<a href="'.$source['link'].'" class="streaming-option">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <img src="'. get_stylesheet_directory_uri()."/assets/images/sources/78x78/".$source['source'].'".png"/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <strong>'. $source['display_name'] .'</strong>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</a>';&nbsp; }您现在可以使用 holder 变量并内爆数组来打印列表echo implode(",", $holderNetflix);echo implode(",", $holderHulu);echo implode(",", $holderAmazon);
打开App,查看更多内容
随时随地看视频慕课网APP