выбрать случайные изображения из массива

0

Таким образом, у меня есть этот код, который случайно отображает изображение из предоставленного массива:

$bg = array('1.jpg', '2.jpg', '2.jpg',); // array of filenames

$i = rand(0, count($bg)-1); // generate random number size of the array
$selectedBg = "$bg[$i]"; // set variable equal to which random filename was chosen

Но я хотел бы получить изображения из папки независимо от имени и количества.

Я пробовал это:

$dir = "bg_photos/less_saturation/";

$exclude = array( ".","..");
if (is_dir($dir)) {
    $files = scandir($dir);
    foreach($files as $file){
        if(!in_array($file,$exclude)){
            echo $file;         
            $bg = array($file); // array of filenames
            $i = rand(0, count($bg)-1); // generate random number size of the array
            $selectedBg = "$bg[$i]"; // set variable equal to which random filename was chosen
        }
    }
}

Но это только когда-либо дает мне последнее изображение в массиве... Может ли кто-нибудь помочь?

ура

Крис

  • 0
    совет 1: массив print_r $ bg , совет 2: чтение и сравнение с массивом $ bg = array ('1.jpg', '2.jpg', '2.jpg',);
  • 0
    добавить 1 элемент в массив использовать $ bg [] = $ file
Теги:
arrays
scandir

2 ответа

1
Лучший ответ

Вы можете использовать этот код. Это собирает все файлы, кроме . и .., в массив и получить случайный элемент из массива.

$dir = "bg_photos/less_saturation/";
$exclude = array( ".","..");
$bg = array();
if (is_dir($dir)) {
    $files = scandir($dir);
    foreach($files as $file){
        if(!in_array($file,$exclude)){
            echo $file;         
            //Use as an array
            $bg[] = $file; // array of filenames
        }
    }
}
$selectedBg = $bg[array_rand($bg)];
  • 0
    Very Cool Эта последняя строка - то, что я искал. Большое спасибо, я приму ваш вопрос всего за несколько минут :)
  • 0
    но сделай это вне своей петли. И используйте $bg[] вместо $bg = потому что вы всегда будете перезаписывать это.
1

Вы можете сделать что-то вроде этого:

$dir = "bg_photos/less_saturation/";

if (is_dir($dir)) {
    $files = array_diff(scandir($dir), array('..', '.'));

    $i = rand(0, count($files)-1); // generate random number size of the array
    $selectedBg = $files[$i]; // set variable equal to which random filename was chosen
}
  • 0
    Это не случайно. Это вернет вам всегда последний.
  • 0
    @lolka_bolka, почему это вернет только последний? Я что-то пропустил ?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню