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

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

$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

Решение

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

$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)];
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
}
1

По вопросам рекламы [email protected]