W języku PHP zmienną zainicjowano poleceniem $a = '5'; (napis). Wynikiem wyrażenia $a + 3 jest
A. '5 3' (napis).
Źle. Ani dodawanie, ani łączenie napisów nie wstawia spacji.
B. '53' (napis).
Źle. Tak działa JavaScript; w PHP napisy łączy kropka, a plus dodaje.
C. błąd - nie można dodać napisu do liczby.
Źle. Napis liczbowy PHP zamienia na liczbę bez błędu.
D. 8 (liczba całkowita).
Dobrze. PHP zamienia napis liczbowy na liczbę i dodaje: 5 + 3 = 8.
Operator
+ w PHP zawsze oznacza dodawanie liczb. Gdy jeden z argumentów jest napisem zawierającym liczbę, PHP automatycznie zamienia go na wartość liczbową, więc '5' + 3 daje 8 typu int. Do zapamiętania: w PHP + dodaje, a . łączy napisy, więc '5' . 3 dałoby napis „53”. To odwrotnie niż w JavaScript, gdzie '5' + 3 daje „53”, bo tam + przy napisie łączy tekst. Wynik i jego typ sprawdzisz poleceniem var_dump($a + 3);, które wypisze int(8). Napis bez liczby, na przykład 'abc' + 3, w PHP 8 zakończy się błędem typu. Konwersję możesz też wykonać jawnie: (int)$a + 3.Błędne odpowiedzi biorą się najczęściej z przeniesienia zasad z innego języka. Wynik „53” dałby JavaScript, w którym plus przy napisie łączy tekst; w PHP do łączenia służy kropka, a plus zawsze dodaje liczby. Napis „5 3” ze spacją nie powstałby w żadnym z tych języków, bo ani dodawanie, ani łączenie nie wstawia odstępu. Błędu też nie będzie: napis
'5' jest napisem liczbowym, więc PHP po cichu zamienia go na liczbę 5. Ostrzeżenie lub błąd typu pojawia się dopiero wtedy, gdy napis nie zawiera liczby albo ma ją tylko na początku, na przykład '5 kg'. W tym zadaniu wynikiem jest liczba całkowita 8. Dlatego przy pracy z danymi z formularza warto jawnie zamieniać typ, na przykład przez (int). Wtedy wynik jest przewidywalny niezależnie od tego, co wpisał użytkownik.