【问题标题】:Display pictures from a folder in the specific way - PHP以特定方式显示文件夹中的图片 - PHP
【发布时间】:2021-03-21 01:25:42
【问题描述】:

我正在尝试在 php 中创建具有页面上特定图片顺序的动态图库,但我找不到执行此操作的函数或一段 php 代码。

条件:

  1. 图库必须是动态的,图片将通过 php 来自文件夹,因为当我在文件夹中添加/上传更多图片时,它们必须显示在页面上,而无需手动添加 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 张图片,并以这种方式循环显示该文件夹中的所有图片。

【问题讨论】:

  • 你想保持这样的模式,第一行5张照片其他行4张照片?
  • 嗨。不,我尝试在第一行放 5 张照片,在第二排放 4 张照片,然后一遍又一遍地重复,例如:5 - 4 - 5 - 4 - 5 - 4.. 以此类推

标签: php web dynamic gallery


【解决方案1】:

您可以利用 array_splice 函数在每次返回这些元素时从数组中删除这些元素:

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

【讨论】:

  • 感谢 challet,您的代码更接近我的目标,因为它显示:5 - 4 - 4 - 4... 每行以此类推。我想我需要调整代码的“0 ? 5 : 4”部分,并在 php[dot]net 上找到有关“array_splice”的更多信息。感谢您的帮助,我会在整理时在这里发布代码=D
  • @cykvi 现在我知道您想继续在下一行进行交替,我已经更改了代码以执行此操作。有关测试奇数或偶数的相关问题也可以在这里找到stackoverflow.com/questions/7959247/…
  • 是的,我爱你。就是这样“% 2 == 0 ? 5 : 4”。我从昨天开始研究这个,我研究了“array_splice”、“array_slice”、“array_switch”、array_whatevet,但没有找到我需要的东西。现在我正在查看“PHP Array Operators”并尝试调整这部分代码,我在上面说过。我打开此页面后找到了您的解决方案。非常感谢你!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 2021-05-23
  • 1970-01-01
相关资源
最近更新 更多