Как отобразить случайное изображение из случайного каталога - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь выбрать случайное изображение из случайного каталога.Я делаю функцию для получения случайного каталога и другую функцию для получения случайного изображения из этого каталога.Хорошо, но он не работает, он получает случайный каталог и случайное изображение из другого каталога

<?php

function showRandomDir()
    {
    $files = glob('images/portfolio/*/', GLOB_ONLYDIR);
    shuffle($files);
    $files = array_slice($files, 0, 1);
    foreach($files as $file)
        {
        return $file;
        }
    }

function rotate2()
    {
    $list = scandir(showRandomDir());
    $fileRotateList = array();
    $img = '';
    foreach($list as $fileRotate)
        {
        if (is_file(showRandomDir() . htmlspecialchars($fileRotate)))
            {
            $ext = strtolower(pathinfo($fileRotate, PATHINFO_EXTENSION));
            if ($ext == 'gif' || $ext == 'jpeg' || $ext == 'jpg' || $ext == 'png')
                {
                $fileRotateList[] = $fileRotate;
                }
            }
        }

    if (count($fileRotateList) > 0)
        {
        $imageNumber = time() % count($fileRotateList);
        $img = showRandomDir() . urlencode($fileRotateList[$imageNumber]);
        }

    return $img;
    }

1 Ответ

0 голосов
/ 14 ноября 2018

В начале вашей функции rotate2() вы вызываете showRandomDir(), чтобы получить содержимое случайного каталога:

$list = scandir(showRandomDir());

Но затем, в конце, вы снова вызываете showRandomDir(), так чтовы получаете другой случайный каталог.
(Ну, новый один, это, вероятно, другой, но может случайно быть тем же.)

$img = showRandomDir() . urlencode($fileRotateList[$imageNumber]);

Вместо этого вам необходимо сохранить первый вызов в переменной и использовать эту переменную вместо вызова showRandomDir() во второй раз.

$dir = showRandomDir();
$list = scandir($dir);
// ... the rest of the code in between
$img = $dir . urlencode($fileRotateList[$imageNumber]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...