以特定方式显示文件夹中的图片 - PHP

Display pictures from a folder in the specific way - PHP

我正在尝试在 php 中创建动态图片库,其中图片在页面上按特定顺序排列,但我找不到 php 的函数或代码片段。

条件:

  1. 图库必须是动态的,图片将通过 php 来自文件夹,因为当我 add/upload 文件夹中的更多图片时,它们必须显示在页面上,而无需手动添加html 中的标签。(这部分很简单,问题是条件 2)。
  2. 第一行将有 5 张图片,第二行 - 4 张图片(对于特定效果很重要)。

我的代码:

    $files = glob("layout/gallery/*.jpg");

      rsort($files, SORT_NATURAL);

      for ($i=0; $i < count($files); $i++) {

        for( ; $i<5; $i++){
        $one = $files[$i];
        echo '<img src="'.$one.'">' . '<br><br>';
        }

echo '<br>';

        for( ; $i<9; $i++){
        $two = $files[$i];
        echo '<img src="'.$two.'">' . '<br><br>';
        }

      }

代码运行良好,但明显只显示9张图片。我无法让它动态地先显示 5 张图片,然后再显示 4 张图片,然后一直这样循环直到显示该文件夹中的所有图片。

您可以利用 array_splice 函数,它每次从数组中删除元素 returns 这些元素 :

$files = glob("layout/gallery/*.jpg");

rsort($files, SORT_NATURAL);

// split the files in rows
$rows = [];
while(count($files) != 0) {
    // even rows have 5 elements, odd ones have 4
    $num_files_to_splice = count($rows) % 2 == 0 ? 5 : 4;
    $rows[] = array_splice($files, 0, $num_files_to_splice);
}

// display them accordingly
foreach($rows as $row) {
    foreach($row as $file) {
        echo '<img src="'.$file.'">';
    }
    echo '<br><br>';
}