Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Pętla wykonuje się tylko raz
Forum PHP.pl > Forum > Przedszkole
Adrian1207
Witam.
Mam pewien problem z pętlą, może na początek kod:
  1. <?php
  2. header("Content-type: image/jpeg");
  3. $im = imagecreatefromjpeg("banner.jpg");
  4. $width=imagesx($im);
  5. $height=imagesy($im);
  6. $sprw=1;
  7. $sprh=1;
  8. do{
  9. $rgb = imagecolorat($im, $sprw, $sprh);
  10. $r = ($rgb >> 16) & 0xFF;
  11. $g = ($rgb >> 8) & 0xFF;
  12. $b = $rgb & 0xFF;
  13. $rysunek=imagecreate(100,100);
  14. $idcolor=imagecolorallocate($rysunek,$r,$g,$b);
  15. $czarny=imagecolorallocate($rysunek,0,0,0);
  16. imagefill($rysunek,0,0,$czarny);
  17. $litera=A;
  18. $litsprw=$sprw+5;
  19. $litsprh=$sprh+5;
  20. imagestring($rysunek, 5, $litsprw, $litsprh, $litera, $idcolor);
  21. $sprw=$sprw+1;
  22. $sprh=$sprh+1;
  23. } while ($sprw==$width);
  24. imagejpeg($rysunek);
  25. ?>



Mam problem, ponieważ instrukcja w pętli zostaje wykonana tylko raz, a nie jak chcę żeby było, czyli aż do narysowania wszystkich liter w kolorach pikseli. Mam nadzieję że zrozumiecie o co w skrypcie chodzi, ma wyświetlać literę A jako piksel, czyli w jego kolorze i jego miejscu. Ale gdzieś zrobiłem błąd i pętla się wykonuje tylko raz, możecie ten błąd mi wskazać? A może w czym innym leży problem? Z góry dzięki za odpowiedź.

Pozdrawiam
nospor
zobacz w manualu jak dziala do...while bo chyba nie zakumales.

  1. <?php
  2. while ($sprw==$width);
  3. ?>
petla bedzie dzialac, dopoki $sprw jest równe $width. A skoro $width nie zmienia się a zmienia się $sprw to raczej dlugo ten warunek nie bedzie spelniony winksmiley.jpg
drPayton
Oj długo, gdzieś około wieczności winksmiley.jpg
  1. <?php
  2. while ($sprw!=$width);
  3. ?>

Pewnie miało być winksmiley.jpg
Adrian1207
Fakt, źle to zrobiłem i powinno cały czas się wykonywać, tylko dlaczego wykonuje się raz?

Zmianiłem na:
  1. <?php
  2. while ($sprw!=$width);
  3. ?>

Ale teraz ani razu się nie wykonuje, to znaczy nie ma tej litery w ogóle.

I przy okazji zapytam, co należy zrobić ze zmienną $idcolor żeby użyć tego koloru w kodzie html, czyli otrzymać 6cio znakowy kod np. #999999?
drPayton
Cytat
Ale teraz ani razu się nie wykonuje

A to akurat niemożliwe, bo pętla do...while ma to do siebie, że bezwzględnie zawsze wykona się przynajmniej raz. Skoro twierdzisz, że nie, to znaczy jedynie że nie widzisz efektu, więc błąd gdzie indziej masz...
Sprawdź jaką wartość na początku ma $width...
Adrian1207
Nie wiem, coś kombinowałem ale dalej nie wychodzi, teraz potrzeba mi ten kolor ze zmiennej $idcolor użyć w html, tylko nie wiem jak to zrobić. Bo chcę inaczej rozwiązać tą pętlę ale tego koloru nie wiem jak użyć. Może ktoś powiedzieć?
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.