Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是一种在不同位置回显相同数据的方法,而无需多次回显_Php - Fatal编程技术网

Php 是一种在不同位置回显相同数据的方法,而无需多次回显

Php 是一种在不同位置回显相同数据的方法,而无需多次回显,php,Php,因此,我从json APi获取数据,并使用foreach将其回送到复杂的链接中。假设数据包括 -头衔 -链接 -形象 因此,第一个foreach将循环遍历数据,并以一种格式将其回送出来,图像缩略图和标题可单击,所有内容都包装在一个块中 然后,在网站的其他地方,我需要使用相同的数据,但格式不同,我想看看我是否可以在不使用多个foreach的情况下做到这一点 首先我需要检查标题是否可用,并返回true或false, 然后我需要再次列出标题,这次是纯文本,用逗号分隔,不包括我已经检查过的标题 不确定这

因此,我从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>';
  }
<?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'].", ";

     }
   }
}

您可以收集变量中所需的数据,然后将变量回送到所需的部分

我将尝试使用你的代码

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

如果数组推送不是在每个if语句中只运行一次,我需要收集所有源代码,包括那些不是netflix、hulu、amazon的源代码。还有一大堆,我不打算全部检查,但仍然需要作为备选方案列出。好的,我能够在if语句之外添加数组push,它正确地收集所有源,并用逗号分隔它们。我唯一还没有弄明白的是如何从数组中排除项。。。。我最终使用了一个holder变量,而不是单个的。嗯,如果是这样的话,我想你需要运行另一个循环。或者,您仍然可以将数据收集到二维数组中,然后将数据分组,然后循环数组,这样循环会更短;而且效果很好你自己想出来的伙计:)
echo implode(",", $holderNetflix);
echo implode(",", $holderHulu);
echo implode(",", $holderAmazon);