Na podstawie przypisania wartości do zmiennych zapisanych w języku PHP można stwierdzić, że
$zmienna1 = 15; $zmienna2 = 15.0; $zmienna3 = (int) $zmienna2;
A. zmienna2 i zmienna3 są tego samego typu.
B. zmienna1 i zmienna3 są tego samego typu.
C. wszystkie zmienne są tego samego typu.
D. zmienna1 i zmienna2 są tego samego typu.
Poprawna odpowiedź to: zmienna1 i zmienna3 są tego samego typu. W PHP zapis 15 bez części dziesiętnej tworzy wartość typu integer, czyli liczbę całkowitą. Zapis 15.0 zawiera część dziesiętną, dlatego $zmienna2 ma typ float, nazywany też double. Instrukcja (int) $zmienna2 wykonuje rzutowanie, czyli jawnie zamienia wartość zmiennoprzecinkową na liczbę całkowitą. W wyniku $zmienna3 otrzymuje wartość 15 typu int, tak jak $zmienna1. Do zapamiętania: (int) przed wyrażeniem wymusza typ całkowity. W praktyce rzutowanie stosuje się np. przy danych z formularzy, gdy liczba ma być użyta jako identyfikator, licznik albo indeks tablicy. Typową pułapką jest utożsamianie tej samej wartości liczbowej z tym samym typem danych.
W tym fragmencie decydują nie tylko wartości liczbowe, lecz także sposób ich zapisu i rzutowanie typu. Odpowiedź zmienna1 i zmienna2 są tego samego typu byłaby trafna tylko wtedy, gdy obie zmienne przechowywałyby np. liczby całkowite zapisane jako 15 albo obie liczby zmiennoprzecinkowe zapisane jako 15.0. Tutaj $zmienna1 ma typ int, a $zmienna2 ma typ float. Odpowiedź zmienna2 i zmienna3 są tego samego typu pomija działanie operatora (int). $zmienna2 przed rzutowaniem jest typu float, natomiast $zmienna3 po przypisaniu wyniku rzutowania jest typu int. Odpowiedź wszystkie zmienne są tego samego typu także nie pasuje, ponieważ tylko dwie zmienne mają typ całkowity. Poprawna odpowiedź to: zmienna1 i zmienna3 są tego samego typu. Typowy błąd polega na założeniu, że skoro 15 i 15.0 oznaczają tę samą wartość matematyczną, to PHP zapisze je jako ten sam typ danych.