Прежде чем приступить к рассмотрению переменных, констант и выражений в РНР, разберемся с типами данных, которые используются в языке. РНР относится к языкам с так называемыми свободными типами данных. Это означает, что допустимо применение операций к данным различных типов, а также присвоение некоторой переменной данных то одного, то другого типа. Этой возможностью следует пользоваться осторожно во избежание недоразумений
Переменная PHP является контейнером для хранения данных. Данные, сохраняемые в переменной, называются значениями этой переменной. Переменная PHP имеет имя (идентификатор) — последовательность букв, цифр, символов подчеркивания без пробелов и знаков препинания, начинающихся обязательно с символа доллара($), за которым должна следовать буква или символ подчеркивания. Иначе говоря, в имени переменной первым символом является $, а вторым не цифры.
Как мы уже знаем, в PHP нет необходимости указывать тип какой-либо переменной или выражения явно. Однако, как мы видели, с каждой величиной в программе все же ассоциирован конкретный тип, который, впрочем, можно поменять в процессе выполнения программы. Такие "подмены" будут вполне осмысленными, если, например, мы к строке "20" прибавим число 10 и получим результат 30 (а не "2010") — это хороший пример того, как PHP выполняет преобразования из числа в строку и наоборот.
Встречаются случаи, когда переменные довольно неудобно использовать для постоянного хранения каких-либо определенных величин, которые не меняются в течение работы программы. Такими величинами могут быть математические константы, пути к файлам, разнообразные пароли и т. д. Как раз для этих целей в PHP предусмотрена такая конструкция, как константа. Константа PHP отличается от переменной PHP тем, что, во-первых, ей ни где в программе нельзя присвоить значение больше одного раза, а во-вторых, ее имя не предваряется знаком $, как это делается для переменных.