Zmienne w środku PHP negacja logiczna wymagają deklaracji dodatkowo negacja logiczna posiadają jawnych typów. Jeżeli stosunki (na przypadek określenie argumentu funkcji innymi słowy operator) danego wyrażenia wymaga zmiany jego typu, zostaje ono rzutowane aż do typu wymaganego. Wśród obsługiwanych rodzajów danych znajdują się:
| Typ | Opis | |
|---|---|---|
| string | Łańcuch tekstowy | Objęty znakami cudzysłowu czy składnią here document ulega interpolacji |
| int | Liczba całkowita | Obsługiwane są stałe całkowite w środku notacji dziesiętnej, szesnastkowej również ósemkowej |
| float | Liczba zmiennoprzecinkowa | |
| bool | Typ logiczny | Do fałszu konwertowanych jest mnogość postaci zmiennych innych typów |
| array | Tablica | Przechowuje dowolną liczbę elementów dowolnego typu. Indeksowana ciągami znaków czy liczbami całkowitymi |
| object | Obiekt | |
| null | Zmienna niezdefiniowana | |
| resource | Zasób zza PHP | przykładowo deskryptor pliku oznacza to spojenie spośród bazą danych |
Domyślnie PHP stale (pomijając obiekty od chwili wersji 5) przekazuje zmienne na wskroś wartość. Przekazywanie na wskroś referencję zachodzi wewnątrz wybranych funkcjach wbudowanych, prócz tego tego jest dozwolone je wymyślić wewnątrz deklaracji własnej funkcji:
<?php function foo(&$value) { $value = 'bar'; } ?>