W kodzie ustawiono $liczba = 1, więc warunek pętli while ($liczba != 0) jest na starcie spełniony (1 nie jest równe 0). To oznacza, że program wejdzie do pętli co najmniej raz.
W każdej iteracji dzieją się dwie kluczowe rzeczy:
- $liczba = rand(0, 100); – losowana jest liczba całkowita z zakresu od 0 do 100, włącznie z wartościami brzegowymi.
- echo $liczba; – wylosowana liczba jest wypisywana na wyjście.
Pętla powtarza się tak długo, jak długo po losowaniu zmienna $liczba nie przyjmie wartości 0. Gdy wylosuje się 0, następuje ważny szczegół: 0 zostaje wypisane, bo instrukcja echo znajduje się w tej samej iteracji po przypisaniu. Dopiero po zakończeniu bloku, przy kolejnym sprawdzeniu warunku, program stwierdza, że $liczba == 0 i przerywa pętlę.
Dlaczego pozostałe odpowiedzi są błędne?
- "kolejne liczby od 1 do 100" – kod nie zwiększa zmiennej o 1 i nie ma licznika, tylko losuje.
- "wczytane z klawiatury…" – brak funkcji wejścia (np. odczytu z STDIN lub formularza), jest wyłącznie rand().
- "wylosowane liczby od 1 do 99" – zakres losowania obejmuje także 0 i 100, więc te wartości mogą się pojawić.
Uwaga praktyczna: w treści pytania kod bywa osadzony w HTML (np. z tagiem <p>). Na egzaminie kluczowa jest jednak analiza samej logiki PHP: zakres rand() oraz warunek zakończenia pętli.