Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

Pętla while

środa,

Pętla while

Pętle pozwalają na wielokrotne wykonywanie sekwencji instrukcji. W języku PHP występuje kilka rodzajów pętli, wśród których znalazła się pętla while. Działa ona podobnie jak jej odpowiednik w języku C. Za każdym razem na początku pętli sprawdzany jest warunek, musi być on spełniony, aby instrukcje umieszczone w pętli zostały wykonane.

Pierwszy przykład jest bardzo prosty, wyświetlane są liczby od jednego do dziesięciu. Zmienna $i początkowo otrzymuje wartość jeden. Instrukcje w pętli wykonują się, jeśli wartość $i nie przekroczyła dziesięciu. W każdym kroku (iteracji) pętli wyświetlana jest wartość zmiennej $i, która następnie jest zwiększana o jeden (inkrementowana).

<?php
  $i = 1;
  while($i < 11) {
    echo $i;
    $i++;
  }
?>

Powyższe zadanie można zrealizować za pomocą mniejszej ilości kodu. W kolejnym przykładzie w każdym kroku pętli zmienna $i jest najpierw zwiększana o jeden (preinkrementacja), a następnie wyświetlona. Dlatego jej początkowa wartość to zero, modyfikacji uległ także warunek. Jeśli w pętli wykonywana jest tylko jedna instrukcja, nawiasy są zbędne. Kodu jest mniej, ale niewątpliwie jest także mniej czytelny.

<?php
  $i = 0;
  while($i < 10) echo ++$i;
?>

Kolejny przykład to generowanie wszystkich możliwych czterocyfrowych pinów. Zrealizowano to w bardzo prosty sposób, wyświetlane są liczby od zera do 9999, które sformatowano, stosując wypełnienie zerami do czterech znaków.

<?php
  $i = 0;
  while($i < 10000) {
    printf("%04d ", $i++);
  }
?>

W poniższym przykładzie nowością jest zastosowany warunek. Wartość zmiennej $i w każdym kroku pętli jest zmniejszana, jeśli osiągnie zero, iteracje przestaną być wykonywane. Dzieje się tak, dlatego że logiczną wartością zera jest fałsz.

<?php
  $i = 10;
  while($i--) {
    echo "CKZiU!
"; } ?>

Poniższy kod w swoim działaniu trochę przypomina popularną grę liczbową. Nie zawsze wygenerowane liczby będą nadawać się do wykorzystania w tej grze, nie zapewniono braku możliwości wystąpienia powtórzeń wśród wygenerowanych liczb. Niedogodność tą usunięto w następnym przykładzie. Funkcja mt_rand() generuje pseudolosową liczbę z zadanego zakresu.

<?php
  $i = 6;
  while($i--) {
    printf("%s
", mt_rand(1, 49)); } ?>

Aby zapewnić unikalność wygenerowanych liczb, wykorzystano tablicę utworzoną za pomocą funkcji range(). W każdym kroku pętli generowana jest liczba z zakresu od zera do wartości reprezentującej aktualną ilość elementów tablicy pomniejszonej o jeden. Pomniejszenie zastosowano, ponieważ indeksy tablicy liczone są od zera. Za „wylosowaną” liczbę przyjmowana jest wartość elementu tablicy oznaczonego wygenerowanym indeksem. Następnie element ten jest usuwany z tablicy. W numeracji elementów pojawia się luka, jednak łatwo to „naprawić” wykorzystując funkcję sort(), która automatycznie nadaje indeksy numeryczne.

<?php
  $i = 6;
  $numbers = range(1, 49);
  while($i--) {
    $x = mt_rand(0, count($numbers) - 1);
    echo "$numbers[$x] ";
    unset($numbers[$x]);
    sort($numbers);
  }
?>

Powyższe zadanie można zrealizować w trochę bardziej zwięzłej formie z wykorzystaniem funkcji tablic. Elementy wygenerowanej tablicy liczb przetasowano z pomocą funkcji shuffle(). Po tej operacji są one ustawione w kolejności pseudolosowej, w przykładzie pobrano pierwszych sześć elementów.

<?php
  $numbers = range(1,49);
  shuffle($numbers);
  echo implode(' ', array_slice($numbers, 0, 6));
?>

Rok temu na naszej stronie…

Artykuł: Aleksander Makagonow

Aleksander Makagonow

Artykuł: Światowy Dzień Obrony Cywilnej

Światowy Dzień Obrony Cywilnej

Artykuł: Operacja Biting

Operacja Biting

Artykuł: Generał Roman Abraham

Generał Roman Abraham

Artykuł: Kazimierz Heilman-Rawicz

Kazimierz Heilman-Rawicz

Artykuł: Kopiowanie plików z pomocą SCP

Kopiowanie plików z pomocą SCP

Artykuł: Klient SFTP Filezilla

Klient SFTP Filezilla

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły