Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak losować elementy tablic?
VishOne
post 6.01.2011, 16:48:10
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.08.2010

Ostrzeżenie: (0%)
-----


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.

Ten post edytował VishOne 6.01.2011, 16:49:32
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Dipter
post 6.01.2011, 17:21:35
Post #2





Grupa: Zarejestrowani
Postów: 81
Pomógł: 14
Dołączył: 28.11.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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

Ten post edytował Dipter 6.01.2011, 18:11:55
Go to the top of the page
+Quote Post
VishOne
post 6.01.2011, 17:25:03
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.08.2010

Ostrzeżenie: (0%)
-----


Dzięki za pomoc ale już wymyśliłem sobie jak to zrobić w prosty sposób.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 14:24