W języku PHP do zmiennej a przypisano tekst. Aby odwrócić kolejność znaków w tym tekście i zapisać wynik w zmiennej a, należy użyć polecenia
A.
$a = reverse($a);
B.
$a = strrev();
C.
$a = strrev($a);
D.
$a = array_reverse($a);
Funkcja strrev($a) jest właściwym wyborem, bo w PHP służy dokładnie do odwracania kolejności znaków w łańcuchu tekstowym. Zapis $a = strrev($a); oznacza: weź aktualną wartość zmiennej $a, odwróć ją i przypisz wynik z powrotem do tej samej zmiennej. Czyli jeśli $a ma wartość abcde, po wykonaniu instrukcji będzie miała edcba. To jest typowy przykład operacji na stringach, bardzo często spotykany przy prostych zadaniach algorytmicznych, walidacji danych, testowaniu palindromów albo przygotowywaniu tekstu do dalszego przetwarzania. Z mojego doświadczenia warto zapamiętać, że funkcje tekstowe w PHP zwykle mają przedrostek str, np. strlen, strpos, strtolower, strtoupper, więc strrev dobrze pasuje do tej konwencji nazewniczej. Dobra praktyka jest taka, żeby zawsze przekazać funkcji konkretny argument, czyli tutaj $a, bo funkcja musi wiedzieć, jaki tekst ma przetworzyć. Mała uwaga praktyczna: strrev działa dobrze dla prostych tekstów jednobajtowych, ale przy znakach UTF-8, np. polskich literach, może dać dziwny wynik. W takich sytuacjach w prawdziwych projektach lepiej rozważyć rozwiązanie obsługujące Unicode, np. z użyciem rozszerzenia mbstring albo własnej funkcji na znakach wielobajtowych.
W tym zadaniu kluczowe jest rozróżnienie funkcji przeznaczonych do pracy z tekstem od funkcji przeznaczonych do pracy z tablicami oraz pamiętanie, że PHP nie ma każdej funkcji nazwanej tak, jak intuicyjnie mogłoby się wydawać. Poprawna instrukcja to $a = strrev($a);, ponieważ strrev przyjmuje łańcuch znaków i zwraca ten sam tekst w odwróconej kolejności. Samo przypisanie z powrotem do $a jest też ważne, bo funkcja zwraca wynik, ale nie zmienia automatycznie zmiennej w miejscu.
Nazwa reverse brzmi logicznie, ale w standardowym PHP nie jest wbudowaną funkcją do odwracania tekstu. To dość typowa pułapka, bo w różnych językach programowania spotyka się podobne nazwy metod, jednak w PHP trzeba trzymać się dokumentacji i realnych nazw funkcji. array_reverse również może wyglądać kusząco, bo faktycznie odwraca kolejność elementów, ale działa na tablicach, a nie na zwykłym stringu. Jeżeli przekaże się do niej tekst, kod nie realizuje sensownie celu zadania i może skończyć się ostrzeżeniem albo błędem typu, zależnie od wersji PHP i konfiguracji. Zapis strrev() bez argumentu też nie wystarczy, ponieważ funkcja musi dostać tekst, który ma odwrócić. Bez tego interpreter nie wie, na jakich danych pracować. Moim zdaniem najprostsza zasada do zapamiętania jest taka: tekst odwracamy przez strrev(tekst), tablicę przez array_reverse(tablica), a nazwy funkcji zawsze warto kojarzyć z typem danych, na którym operują.
Nazwa reverse brzmi logicznie, ale w standardowym PHP nie jest wbudowaną funkcją do odwracania tekstu. To dość typowa pułapka, bo w różnych językach programowania spotyka się podobne nazwy metod, jednak w PHP trzeba trzymać się dokumentacji i realnych nazw funkcji. array_reverse również może wyglądać kusząco, bo faktycznie odwraca kolejność elementów, ale działa na tablicach, a nie na zwykłym stringu. Jeżeli przekaże się do niej tekst, kod nie realizuje sensownie celu zadania i może skończyć się ostrzeżeniem albo błędem typu, zależnie od wersji PHP i konfiguracji. Zapis strrev() bez argumentu też nie wystarczy, ponieważ funkcja musi dostać tekst, który ma odwrócić. Bez tego interpreter nie wie, na jakich danych pracować. Moim zdaniem najprostsza zasada do zapamiętania jest taka: tekst odwracamy przez strrev(tekst), tablicę przez array_reverse(tablica), a nazwy funkcji zawsze warto kojarzyć z typem danych, na którym operują.