繁体   English   中英

PHP foreach循环处理HTML 3表格列中的所有图像

[英]PHP foreach loop for all images in a HTML 3 table column

嗨,我是PHP和此站点的新手,所以请保持友好:)

我目前在处理下面的PHP foreach代码时遇到麻烦,因为我试图回显HTML表3列中的所有图像,但它仅回显2。

更新:感谢评论员的帮助,我设法解决了一些问题。 但是,我现在遇到另一个令人困惑的问题。

基本上,如果我在文件夹中有一张图片,它将回显该张图片,但是如果我在其中放置两张图片,则回显为4,第一个图片为2,第二个也为2。 即使我在该文件夹中有2张图像,也基本上显示4张图像。 我似乎无法解决此问题。

这是代码:

<?php
// get images
$images = glob($imagedir.'/' . "*.png");
$i = 0;
echo'<table><tr>';
foreach($images as $image)
{
    $i++;
   echo '<td><img src="'.$image.'" height="200"></td>';
   if($i == 3)
   {
       echo '</tr><tr>';
       $i = 0;
   }
}
echo '</tr></table>';
?>

提前致谢

您是用来渲染HTML的代码。 如果重复,则imagedir的内容一定是错误的。

几点评论:

  1. glob($imagedir.'/' . "*.png"); 还包括名称以.png结尾的目录。
  2. 根据图像的数量,最后一个表格行将不会完全充满表格单元格。
  3. 最好不要在文件末尾使用php结束标记?>

我已经更改了您的代码,以避免上述问题。 我敢肯定还有更多/其他方法可以做到这一点,但是首先要想到这一点。

<?php
    $imagedir = 'images';
    //Get *.png files only
    $images = array_filter(glob("$imagedir/*.png"), 'is_file');

    //Make image array divisble by 3 (columns)
    while (count($images) % 3 != 0) {
        $images[] = '';
    }

    echo'<table><tr>';
    for ($i = 1; $i <= count($images); $i++) {
        //Render TD if $image is not empty
        if ($images[$i-1] != '' != '') {
            echo '<td><img src="' . $images[$i-1] . '">', "<br>Image $i</td>";
        }
        //Close table row after 3 TD's
        if($i % 3 == 0) 
        {
            echo '</tr><tr>';
        }
    }
    echo '</tr></table>';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM