是一种在不同位置回声相同数据的方法,而不需要多个for each



因此,我从json APi中获取数据,并使用foreach将其回声到复杂的链接中。假设数据包括-所有权-链接-图像

因此,第一个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、亚马逊等也一样。我真的希望有一种更清洁的方式。

您可以在一个变量中收集所需的数据,然后将该变量回显到所需的部分。

我将尝试使用你的代码。

<?php 
$neflix = false;
$hulu = false;
$amazon = false;
$holderNetflix = [];
$holderHulu = [];
$holderAmazon = [];
foreach($sources as $source) {
if ($source['source'] == "netflix"){
$neflix = true;
array_push($holderNetflix,$source['display_name']); // collecting data
}
if ($source['source'] == "hulu"){
$hulu = true;
array_push($holderHulu,$source['display_name']);
}
if ($source['source'] == "amazon"){
$amazon= true;
array_push($holderAmazon,$source['display_name']);
}

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>';
}

您现在可以使用holder变量并内爆数组来打印列表

echo implode(",", $holderNetflix);
echo implode(",", $holderHulu);
echo implode(",", $holderAmazon);

最新更新