PHP/Instrukcja for: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 13:
Oddzielone są one średnikami. Pokażemy to na przykładzie skryptu wyświetlającego liczby od 0 do 9.
<
for($i = 0; $i < 10; $i++)
{
echo $i.'<br/>';
}
</syntaxhighlight>
Warunek startu tworzy nową zmienną <code>$i</code> z wartością zero. Następnie określamy, że dopóki <code>$i</code> jest mniejsze od 10, pętla ma się powtarzać. Przy każdym cyklu należy zwiększyć wartość <code>$i</code> o 1.
Linia 34:
Zastosujemy funkcję <code>file()</code>, aby wczytać go do pamięci z jednoczesnym rozbiciem na poszczególne wiersze zapisane w tablicy. W ten sposób będziemy je mogli wyświetlić jako elementy listy wypunktowanej:
<
$plik = file('plik.txt');
Linia 43:
}
echo '</ul>';
</syntaxhighlight>
Do określenia ilości wierszy użyliśmy poznanej już wcześniej funkcji <code>count()</code>. Przy wyświetlaniu stosujemy jeszcze jedną: <code>trim()</code>. Usuwa ona z początku i końca każdego wiersza białe znaki, tj. spacje, zejścia do nowej linii, tabulatory. Wynikiem działania skryptu jest zawartość pliku wyświetlona w liście wypunktowanej.
Linia 49:
Zwróć uwagę na specyficzną budowę wyrażenia inicjacji pętli. Pragniemy utworzyć dwie zmienne, dlatego oddzielamy je przecinkami. Podobną sztuczkę możemy zastosować również w wyrażeniu iteracyjnym. Można się zapytać, dlaczego zastosowaliśmy tak rozbudowaną konstrukcję. Przecież dopuszczalne jest także napisanie:
<
</syntaxhighlight>
W typowych sytuacjach obie konstrukcje zachowają się podobnie, lecz warto pamiętać o pewnym niuansie technicznym. Pierwsza z konstrukcji pobiera ilość elementów tablicy na samym początku. Jeżeli któryś cykl pętli doda jakiś element, nie zostanie on uwzględniony. W drugim przypadku ilość ta jest pobierana po każdym cyklu, zatem pętla dysponuje bieżącymi informacjami o wielkości tablicy i wszelka jej zmiana zostanie uwzględniona w ilości wykonanych cykli. Sposób ten jest jednak mniej wydajny od pierwszego.
Linia 68:
Naszym zadaniem jest wprowadzenie komend do tablicy, aby można je było łatwiej przetwarzać. Skrypt ten będziemy pisać kawałek po kawałku. Na początek stwórzmy sobie parę zmiennych:
<
$tekst = 'Komenda; Komenda; Komenda; Komenda. To już pomijamy.';
$tablica = array(0 => '');
$t = 0;
</syntaxhighlight>
<code>$tekst</code> to tekst do przetworzenia. <code>$tablica</code> jest miejscem docelowym komend z "firmowo" utworzonym pierwszym pustym elementem. ''$t'' to licznik mówiący, do którego elementu tablicy wprowadzamy znaki.
Linia 78:
Rozpoczynamy pętlę. Do pobrania długości ciągu użyjemy funkcji <code>strlen()</code>. <code>$i</code> to licznik położenia w ciągu tekstowym. Wskazuje na aktualnie przetwarzany znak:
<
{
</syntaxhighlight>
Implementujemy możliwość pierwszą. Spacje ignorujemy, dlatego przy ich napotkaniu przerywamy aktualny cykl pętli komendą '''continue''' i przechodzimy do następnego:
<
{
continue;
}
</syntaxhighlight>
Zauważ, jak odwołujemy się do określonego znaku wewnątrz ciągu: <code>$tekst[$i]</code>. Numer znaku (począwszy od zera) podajemy jako indeks w nawiasach kwadratowych, identycznie jak w tablicach.
Linia 94:
Druga możliwość - po napotkaniu kropki przerwać pętlę wcześniej:
<
{
break;
}
</syntaxhighlight>
Przechodzimy do ewentualności trzeciej. Przy średniku należy przesunąć się na nowy element tablicy wynikowej i zainicjować go pustym ciągiem. Każdy inny znak wprowadzamy do aktualnego elementu tablicy:
<
{
$t++;
Linia 111:
$tablica[$t] .= $tekst[$i];
}
</syntaxhighlight>
Teraz dopełnienie formalności, tj. zamknięcie pętli i wyświetlenie zawartości tablicy funkcją <code>var_dump()</code>:
<
echo '<pre>';
var_dump($tablica);
echo '</pre>';
</syntaxhighlight>
Zapytajmy się, jak przerwać pętlę, jeżeli jesteśmy aktualnie w instrukcji switch? Wywołanie '''break''' i '''continue''' będzie się przecież odnosiło do niej, a tego nie chcemy. Rozwiązaniem jest podanie po nich numeru określającego, której instrukcji wzwyż dotyczy wywołanie. Przepiszmy jeszcze raz powyższy kod z wykorzystaniem instrukcji wyboru (notabene nawet bardziej pasującej w tym przypadku):
<
$tekst = 'Komenda; Komenda; Komenda; Komenda. To już pomijamy.';
$tablica = array(0 => '');
Linia 149:
var_dump($tablica);
echo '</pre>';
</syntaxhighlight>
Przy stanach spacji oraz kropki wywołujemy komendy '''continue''' oraz '''break''' z parametrem 2, aby podkreślić, że dotyczą one pętli for, a nie instrukcji switch. '''break''' w kodzie obsługi średnika nie ma parametru, więc odnosi się do instrukcji switch.
|