PHP foreach循环,用于HTML 3表格列中的所有图像

Hi I'm a newbie with PHP and this site, so please be nice :)

I'm currently having trouble working the below PHP foreach code out as I'm trying to echo all images in a HTML table 3 column but it echo's with 2 only.

UPDATE: I've managed to fix some issues thanks to the comments guy's, thank you. However, I', now experiencing another issue which is confusing.

Basically, If I have one picture in a folder, it will echo that one picture, but If I put two pictures there, it echo's out with 4, 1 first picture echo's with 2 and the second is with 2 as well. Basically showing 4 images even though I have 2 images in that folder. I can't seem to fix this..

Here's the code:

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

Thanks in Advance

You're code for rendering the HTML is just fine. If you have duplicates, the content of your imagedir must be wrong.

A few remarks:

  1. glob($imagedir.'/' . "*.png"); also include directories which names end as .png.
  2. Depending on the amount of images, the last table row will not be completely filled with table cells.
  3. It's good practice not using the php closing tag ?> at the end a the php file.

I've altered you code to avoid above to problems. I'm sure there more/other ways to do this, but this came in mind first.

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