Случайный номер изображения PHP не соответствует - PullRequest
0 голосов
/ 28 ноября 2011

Я использую PHP-скрипт, который получает данные из текстового файла и отображает три случайных изображения на странице php. У меня проблема в том, что три изображения не всегда отображаются на странице: / При обновлении страницы для просмотра новых случайных изображений иногда отображается только 1 изображение, иногда только 2, а затем три. Я хочу, чтобы три случайных изображения отображались всегда. У кого-нибудь есть идеи, что я мог бы добавить, чтобы всегда отображались три изображения? : S

PHP:

 <?php 
 $random = "random.txt";
$fp = file($random);
shuffle($fp);
$keys = array_rand($fp, 3);
for ($i = 0; $i < 3; $i++):
$rl = $fp[$keys[$i]]; 
echo $rl;
endfor;
?>

HTML:

 <div class="imagecontainer">
 <?php include('rotate.php') ?>
 </div>

1 Ответ

3 голосов
/ 28 ноября 2011

array_rand () обслуживает ключи (и значения) вашего файлового массива, но НЕ переиндексирует их, начиная с нуля. Допустим, ваш массив состоит из 5 элементов, от 0 до 4. Тогда получение случайных ключей может привести к массиву, содержащему (0 => "img0", 2 => "img2", 4 => "img4").

Ваш цикл заботится только об индексе с номерами от 0 до 2. Поэтому в некоторых случаях вам не хватает некоторых ваших изображений.

Попробуйте использовать for_each для обхода массива $ keys. Это должно игнорировать номера индексов вашего массива.

...