Ну, это может быть излишним, но вы также можете использовать итератор каталогов и некоторую случайность для достижения этого. Я использовал модифицированную версию функции генерации случайных чисел из ответа this.
убедитесь, что путь, который вы передаете функции, относится к каталогу, в котором находится скрипт, с слэш в начале. Константы __DIR__
не изменятся, если бы вы случайно вызвали этот сценарий из разных мест в вашей иерархии файлов.
<?php
function randomImages($path,$n) {
$dir = new DirectoryIterator(__DIR__. $path);
// we need to know how many images we can range on
// but we do not want the two special files . and ..
$count = iterator_count($dir) - 2;
// slightly modified function to create an array containing n random position
// within our range
$positionsArray = UniqueRandomNumbersWithinRange(0,$count-1,$n);
$i = 0;
foreach ($dir as $file) {
// those super files seldom make good images
if ($file->getFilename() === '.' || $file->getFilename() === '..') continue;
if (isset($positionsArray[$i])) echo '<div class="item"><img src="'.$file->getPathname().'"></div>';
$i++;
// change the count after the check of the filename,
// because otherwise you might overflow
}
}
function UniqueRandomNumbersWithinRange($min, $max, $quantity) {
$numbers = range($min, $max);
shuffle($numbers);
return array_flip(array_slice($numbers, 0, $quantity));
}
Я не уверен, что это будет отображать случайные изображения. – Manikiran
'n-1' - это что? Можете ли вы уточнить .. – Darren
n по умолчанию равно 10 в этой функции. Если у вас есть 10 изображений в массиве, вы будете обращаться к ним как от 0 до 9 или (10-1) здесь – PC3TJ