$tab = explode(",", "jelenie,sarny,dziki,lisy,borsuki"); echo $tab[1]." ".$tab[2]; Wskaż wynik wykonania przedstawionego kodu PHP, jeżeli zmienna tab...
$tab = explode(",", "jelenie,sarny,dziki,lisy,borsuki"); echo $tab[1]." ".$tab[2];Wskaż wynik wykonania przedstawionego kodu PHP, jeżeli zmienna tab jest tablicą.
A. jelenie sarny
B. sarny dziki
C. lisy borsuki
D. dziki lisy
Pytanie z egzaminu CKE, styczeń 2021 (arkusz EE.09-SG-21.01).
W tym kodzie funkcja PHP explode dzieli tekst na elementy tablicy według podanego separatora, czyli przecinka. Z napisu jelenie,sarny,dziki,lisy,borsuki powstaje tablica $tab, w której indeksowanie zaczyna się od zera, jak standardowo w PHP i w większości języków programowania. Oznacza to, że $tab[0] to jelenie, $tab[1] to sarny, $tab[2] to dziki, $tab[3] to lisy, a $tab[4] to borsuki. Instrukcja echo wypisuje element $tab[1], potem dokleja spację operatorem konkatenacji kropka, a następnie wypisuje $tab[2]. Dlatego wynikiem jest sarny dziki. Moim zdaniem to bardzo ważny przykład, bo pokazuje klasyczny temat: tablice indeksowane od 0. W praktyce explode często używa się przy przetwarzaniu danych z formularzy, prostych plików CSV, list tagów albo parametrów zapisanych w jednym ciągu znaków. Dobrą praktyką jest też sprawdzanie, czy dany indeks istnieje, np. funkcją isset, szczególnie gdy dane pochodzą od użytkownika lub z pliku. W kodzie produkcyjnym warto pamiętać również o trim, bo po przecinkach czasem pojawiają się spacje i wtedy element mógłby mieć niechciany odstęp na początku.
Błędne odpowiedzi zwykle wynikają z pomylenia sposobu indeksowania tablic albo z czytania elementów „na oko”, bez rozpisania sobie zawartości tablicy po użyciu funkcji explode. W PHP tablice indeksowane numerycznie zaczynają się od indeksu 0, a nie od 1. To jest taki drobiazg, który na początku często myli, ale w praktyce ma ogromne znaczenie, bo prowadzi do klasycznych błędów typu przesunięcie o jeden element. Po wykonaniu explode z separatorem przecinek, pierwszy element ma indeks 0 i jest nim jelenie. Drugi element, czyli sarny, ma indeks 1, a trzeci element, czyli dziki, ma indeks 2. Kod nie wypisuje więc dwóch pierwszych wartości tablicy, tylko wartości znajdujące się pod indeksami 1 i 2. Odpowiedź jelenie sarny bierze się najczęściej z założenia, że $tab[1] oznacza pierwszy element, co w PHP nie jest prawdą. Wyniki lisy borsuki albo dziki lisy wskazują z kolei na przesunięcie odczytu w drugą stronę lub pominięcie tego, które indeksy są rzeczywiście użyte w echo. Trzeba też zwrócić uwagę na operator kropki, bo w PHP służy on do łączenia tekstów. Fragment ze spacją nie wybiera nowego elementu tablicy, tylko dodaje zwykły znak odstępu między wypisywanymi wartościami. Z mojego doświadczenia najlepiej przy takich zadaniach najpierw rozpisać tablicę w formie indeks → wartość, bo wtedy wynik wychodzi praktycznie sam i nie trzeba zgadywać.