Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pętla sprawdzająca
Forum PHP.pl > Forum > Przedszkole
kvachu
Witam!
Robię sobie galerię screenów z gier i mam mały problem z dublującymi się losowymi obrazkami. Żeby było jaśniej zamieszczam poniżej screen:


Jak widać na powyższym obrazku to aż trzy obrazki(spośród czterech(pierwszy tytułowy obrazek nie jest losowy)) wywaliło mi takie same. Rzecz jasna wygląda to beznadziejnie.
Mam taki kod:
  1. $title = '3 Choume no Tama - Tama and Friends - 3 Choume Obake Panic!!';
  2. $title2 = '3 Choume no Tama - Tama and Friends - 3 Choume Obake Panic!!';
  3. //Tytułu będą brane z bazy danych, a tu są w tej formie pokazane tylko dla przykładu.
  4. $title2 = str_replace(".", "", $title2);
  5. $title2 = str_replace(" ", "", $title2);
  6. $title2 = str_replace("!", "", $title2);
  7. $title2 = str_replace("-", "", $title2);
  8. $title2 = str_replace(",", "", $title2);
  9. $title2 = str_replace("'", "", $title2);
  10. $title2 = trim($title2);
  11.  
  12. $path = "shots/$title2";
  13. $folder = opendir($path);
  14. $i = 0;
  15. while(false !=($plik = readdir($folder))) {
  16. if($plik != "." && $plik != "..") {
  17. $obrazki[$i]= $plik;
  18. $i++;
  19. }
  20. }
  21. closedir($folder);
  22. $losowy=rand(0,count($obrazki)-1);
  23. $losowy2=rand(0,count($obrazki)-1);
  24. $losowy3=rand(0,count($obrazki)-1);
  25. $losowy4=rand(0,count($obrazki)-1);


Teraz na wyświetlanie obrazka próbowałem coś takiego:
  1. if($losowy != $losowy2) {
  2. ?>
  3. <img src="shots/<? echo $title2;?>/<? echo $title2;?>_title.png" width="160" height="144" border="0" alt="">
  4. <?php
  5. } else {
  6. // i tu właśnie chciałbym coś wstawić by wracało do tej pętli ;[
  7. }


Taka mała ciekawostka. Czasem sobie dłubię w programie RPG Maker 2003 i tam jest właśnie coś podobnego:


Jak widać na powyższym obrazku mamy na początku label1 i gdy warunek nie zostanie spełniony to pętla przeskakuje z powrotem do label1 i dokładnie o coś takiego mi chodzi.
Oczywiście domyślam się, że można to chyba nawet inaczej zrobić. Jak można to nie pogardzę podpowiedziami, ale to też bym chciał wiedzieć to o co proszę. Jeszcze jak widzicie w powyższym kodzie cokolwiek co można zoptymalizować to też chciałbym byście mi to wytknęli, nie pogardzę niczym.

Z góry dzięki i pozdrawiam!

Wicepsik
  1. $losowy = array();
  2.  
  3. do{
  4. $z = rand(0,count($obrazki)-1);
  5. if(!in_array($z, $losowy){
  6. $losowy[] = $z;
  7. }
  8. }while($losowy <4);
kvachu
Wicepsik, nie potrafię tego użyć ; [.
Proóbowałem tak:
  1. <?php
  2.  
  3. function zlicz ($co) {
  4. foreach (glob("shots/".$co."/*") as $wynik) {
  5. if($wynik)
  6. $i++;
  7. }
  8. return $i;
  9. }
  10.  
  11. $title = '3 Choume no Tama - Tama and Friends - 3 Choume Obake Panic!!';
  12. $title2 = '3 Choume no Tama - Tama and Friends - 3 Choume Obake Panic!!';
  13. $title2 = str_replace(".", "", $title2);
  14. $title2 = str_replace(" ", "", $title2);
  15. $title2 = str_replace("!", "", $title2);
  16. $title2 = str_replace("-", "", $title2);
  17. $title2 = str_replace(",", "", $title2);
  18. $title2 = str_replace("'", "", $title2);
  19. $title2 = trim($title2);
  20.  
  21. $path = "shots/$title2";
  22. $folder = opendir($path);
  23. $i = 0;
  24. while(false !=($plik = readdir($folder))){
  25. if($plik != "." && $plik != "..") {
  26. $obrazki[$i]= $plik;
  27. $i++;
  28. }
  29. }
  30. closedir($folder);
  31. //$losowy=rand(0,count($obrazki)-1);
  32. //$losowy2=rand(0,count($obrazki)-1);
  33. //$losowy3=rand(0,count($obrazki)-1);
  34. //$losowy4=rand(0,count($obrazki)-1);
  35.  
  36. $losowy = array();
  37.  
  38. do {
  39. $z = rand(0, count($obrazki)-1);
  40. if(!in_array($z, $losowy) {
  41. $losowy[] = $z;
  42. }
  43. } while ($losowy < 4);
  44.  
  45. ?>
  46.  
  47. <div id="title">
  48. &nbsp; <a href=""><font color="#e4f4b2"><i><? echo $title;?></i></font></a> (<font color="#e4f4b2"> <? echo(zlicz($title2)) ?> </font>)
  49. <div style="height: 15px; position: absolute; top: 0px; right: 0px;">
  50. Click the title to see all screenshots &nbsp;
  51. </div>
  52. </div>
  53. <div id="utitle"></div>
  54. <div id="sshots">
  55.  
  56. <div id="screen">
  57. <img src="shots/<?php echo $title2; ?>/<?php echo $title2; ?>_title.png" width="160" height="144" border="0" alt="">
  58. </div>
  59. <div style="height: 15px; position: absolute; top: 6px; left: 173px;">
  60. <div id="screen">
  61. <img src="shots/<?php echo $title2; ?>/<?php echo $losowy[]; ?>" width="160" height="144" border="0" alt="">
  62. </div>
  63. </div>


No, ale ja noob jestem. Ja jeti. Anyway, dzięki.
Wicepsik
  1. foreach($losowy as $v){
  2. <div id="screen">
  3. <img src="shots/'.$title2.'/'.$v.'" width="160" height="144" border="0" alt="">
  4. </div>';
  5. }
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.