Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak losować elementy tablic?
Forum PHP.pl > Forum > PHP
VishOne
Witam, mam pewien problem. Otóż jakiś czas temu gdzieś znalazłem skrypt do pobierania zdjęć z folderu i wygląda on tak:

  1. <?php
  2.  
  3. $dir = "images/gallery";
  4. $min_dir = "images/gallery/min";
  5. $gallery = opendir($dir);
  6.  
  7. while($image = readdir($gallery)) {
  8.  
  9. $read = pathinfo($dir."/".$image);
  10.  
  11. if($read['extension'] == 'jpg' || $read['extension'] == 'png' || $read['extension'] == 'gif') {
  12.  
  13. echo "<li><a href='".$dir."/".$image."' title='".$image."'><img src='".$min_dir."/".$image."' alt='".$image."' /></a></li>\n";
  14.  
  15. }
  16.  
  17. }
  18.  
  19. closedir($gallery);
  20.  
  21. ?>


Skrypt pobiera zdjęcia z folderu i wyświetla, zarówno miniaturki jak i po kliknięciu cały obrazek. Teraz chciałem wykorzystać go do losowania obrazków (aby były pomieszane) ale w żaden sposób mi się to nie udaje bo jeżeli użyję explode do rozbicia $image na poszczególne nazwy to tworzy mi się kilka tablic ponieważ do każdej wykonanej pętli jest nowa tablica i sam już nie wiem jak to wykonać, aby działało.
Dipter
Napisałem skrypt na szybkości i nie sprawdzony, ale raczej działa. Dałem trochę inne i chyba lepsze rozwiązanie co do formatów obrazka ;P

  1. <?php
  2. // Katalogi
  3. $sImagesDirectory = 'images/gallery';
  4. $sMinImagesDirectory = 'images/gallery/min';
  5.  
  6. // Dostepne formaty
  7. $aAvailableFormats = array('jpg', 'png', 'gif', 'bmp');
  8.  
  9. // Obrazy
  10. $aOpenDir = opendir($sImagesDirectory);
  11. $aImages = array();
  12.  
  13. while($sFile = readdir($aOpenDir)) {
  14. $sPathname = pathinfo($sImagesDirectory.'/'.$sFile);
  15. if(in_array($sPathname['extension'], $aAvailableFormats)) {
  16. $aImages[] = $sFile;
  17. }
  18. }
  19.  
  20. closedir($aOpenDir);
  21.  
  22. $iRand = rand(0, count($aImages));
  23. $sImage = $aImages[$iRand];
  24. ?>
  25. <a href="<?php echo $sImagesDirectory.'/'.$sImage; ?>"><img src="<?php echo $sMinImagesDirectory.'/'.$sImage; ?>" /></a>


Można by też zastosować DirectoryIterator, ale to Ci starczy. Chyba o to chodziło, tak? ;d

#Down
Nie ma sprawy ;P
VishOne
Dzięki za pomoc ale już wymyśliłem sobie jak to zrobić w prosty sposób.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.