Pętla zapisana w języku PHP wstawi do tablicy liczby
$x = 5; for ($i = 0; $i < 5; $i++) { $tab[$i] = $x; $x = $x * 2; }
Poprawny jest ciąg 5, 10, 20, 40, 80. Pętla wykonuje się pięć razy (dla $i od 0 do 4). W każdym obiegu najpierw zapisuje bieżącą wartość $x do tablicy, a dopiero potem ją podwaja. Dlatego pierwszym elementem jest początkowe 5, a każdy kolejny jest dwa razy większy od poprzedniego.
Do zapamiętania: przy śledzeniu pętli rozpisuje się tabelkę $i - zapisana wartość - nowe $x: 0-5-10, 1-10-20, 2-20-40, 3-40-80, 4-80-160. Ostatnie 160 trafia już tylko do zmiennej, bo warunek $i < 5 kończy pętlę. Kolejność instrukcji w ciele pętli decyduje o wyniku - to typowy element zadań egzaminacyjnych.
Każda błędna odpowiedź powstaje z innego potknięcia przy śledzeniu kodu. Ciąg 5, 10, 15, 20, 25 zakłada dodawanie piątki, a instrukcja $x = $x * 2 mnoży, więc wartości rosną coraz szybciej. Ciąg zaczynający się od 0 wynika z pomylenia $x z licznikiem $i - zmienna $x ma na starcie wartość 5, a nie 0.
Ciąg 10, 20, 40, 80, 160 to skutek zamiany kolejności instrukcji: tak wyglądałaby tablica, gdyby podwajanie następowało przed zapisem do tablicy. W kodzie jest odwrotnie - najpierw $tab[$i] = $x, potem mnożenie, więc do tablicy trafia wartość sprzed podwojenia. Dobrą metodą jest przejście pętli „na kartce” przez dwa-trzy pierwsze obiegi i sprawdzenie, która odpowiedź zaczyna się tak samo. Taki sposób sprawdzania wyniku jest szybszy niż rozpisywanie całej pętli.