PHP/Instrukcja while
Instrukcja while
[edytuj]Kolejną pętlą jest while, będąca znacznie prostszą odmianą poznanej ostatnio pętli for. Wymagany jest tu jedynie warunek zakończenia, a pętla wykonuje się, dopóki jest on prawdziwy. Oto prosty przykład:
<?php
while(rand(0,10) != 8)
{
echo 'Jeszcze nie wylosowałem!<br/>';
}
Pętla ta będzie wykonywała się, dopóki funkcja rand()
nie wylosuje liczby 8. Jeżeli dostaniemy ją już w pierwszym sprawdzeniu, napis nie pojawi się w ogóle.
Ze względu na taką ogólną konstrukcję while przydaje się tam, gdzie musimy coś powtarzać do czasu osiągnięcia pewnego stanu. Sztandarowym przykładem jest czytanie pliku, gdzie takim specyficznym stanem, w którym musimy przerwać naszą pracę, jest jego koniec. Zastosowanie pętli while będzie tu o wiele lepsze, niż obliczanie na podstawie wielkości pliku, ile "segmentów" musimy pobrać i zabawa z licznikami.
<?php
$f = fopen('plik.txt', 'r'); // 1
while(!feof($f)) // 2
{
echo fgets($f, 16); // 3
}
fclose($f); // 4
Opis działania:
- Otwieramy plik do odczytu. Uchwyt do niego zapisujemy w zmiennej
$f
. W ten sposób poznaliśmy nowy typ danych: Resource, czyli zasób. - Dopóki nie osiągniemy końca pliku...
- Pobieraj z niego kolejne 16-znakowe bloki.
- Na koniec zamykamy połączenie z plikiem.
Pętlę while można przerobić na pętlę for bez większych trudności. Oto nowa wersja pierwszego przykładu z rozdziału poprzedniego:
<?php
$i = 0;
while($i < 10)
{
echo $i.'<br/>';
$i++;
}
Tu także można stosować komendy break oraz continue poznane w poprzednim rozdziale.
Pętla while przyda się nam, gdy zaczniemy omawiać komunikację z bazami danych. Zostanie tam wykorzystana do pobierania rekordów.