【问题标题】:merge two foreach loop into one and parse it into table row将两个foreach循环合并为一个并将其解析为表格行
【发布时间】:2019-10-05 20:54:07
【问题描述】:

我正在编写如下所示的 php/html 代码,其中我想将两个 php 代码合并为一个。

第一个 foreach 循环:

foreach ( $programs as $program)    {
echo '
<tr>
   <td style="width:8%; text-align:center;">'.$program["series_title"].'</td>
   <td style="width:8%; text-align:center;">'.$program["episode_title"].'</td>
   </tr>
';
}

第二个 foreach 循环:

<?php   foreach ($mp4_files as $file ) {
   ?>
<tr>
   <td style="width:8%; text-align:center;"> <?php echo basename($file, ".mp4"); ?></td>
   <td style="width:8%; text-align:center;"><?php echo date("H:i:s",filemtime("incoming_folder/$file")); ?></td>
   <td style="width:8%; text-align:center;"> <?php echo basename($file); ?></td>
</tr>
<?php
   }
 ?>

合并应该是这样的:

 <tr>

   <td style="width:8%; text-align:center;">'.$program["series_title"].'</td>
   <td style="width:8%; text-align:center;">'.$program["episode_title"].'</td>

   <td style="width:8%; text-align:center;"> <?php echo basename($file, ".mp4"); ?></td>
   <td style="width:8%; text-align:center;"><?php echo date("H:i:s",filemtime("incoming_folder/$file")); ?></td>
   <td style="width:8%; text-align:center;"> <?php echo basename($file); ?></td>

 </tr>

我尝试过类似的方法,但它似乎不起作用。

 foreach(array_combine($programs, $mp4_files) as $f => $n) {
    echo $f.$n;
    echo "<br/>";
}

问题陈述:

我想知道我应该在上面尝试过的 php 代码中进行哪些更改,以便能够成功合并两个 foreach 循环。

【问题讨论】:

  • $programs$mp4_files 是否具有相同数量的值?

标签: php xml foreach html-table


【解决方案1】:

假设两个数组具有相同的键,您可以使用一个数组的键来访问另一个数组的匹配值。例如:

<?php
foreach ($programs as $key => $program)    { 
   $file = $mp4_files[$key];
?>
   <tr>
   <td style="width:8%; text-align:center;"><?php echo $program["series_title"]; ?></td>
   <td style="width:8%; text-align:center;"><?php echo $program["episode_title"]; ?></td>    
   <td style="width:8%; text-align:center;"><?php echo basename($file, ".mp4"); ?></td>
   <td style="width:8%; text-align:center;"><?php echo date("H:i:s",filemtime("incoming_folder/$file")); ?></td>
   <td style="width:8%; text-align:center;"> <?php echo basename($file); ?></td>    
   </tr>
<?php } ?>

【讨论】:

  • 当我在做print_r($file); 时,它只显示一个 mp4 文件,而它应该有三个。
  • 每个程序是否有多个 mp4 文件?
  • 目前在做 print_r($mp4_files);我得到 Array ( [2] => 36017P.mp4 [4] => 36031P.mp4 [6] => hello.mp4 )
  • 假设您需要将$mp4_files 索引为0,1,2,然后在循环之前使用$mp4_files = array_values($mp4_files);
  • @flash 我很抱歉没有回复 - 我不得不处理一些远离我的电脑的事情。我看到问题出在我的怀疑上:$programs$mp4_files 以及不同的键;这就是我要求查看print_r 结果的原因。我很高兴 Nigel 能够为您指出解决问题的正确方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
相关资源
最近更新 更多