Синтаксис

Синтаксис

PHP сочетает достоинства языков C и Perl и при этом весьма прост в изучении и обладает значительными преимуществами перед традиционными языками программирования.

Синтаксис PHP очень напоминает синтаксис языка C и во многом заимствован из таких языков как Java и Perl.

Программист С очень быстро освоит язык PHP и сможет использовать его с максимальной эффективностью.
В принципе, в PHP есть практически все операторы и функции, имеющиеся в стандартном GNU С (или их аналоги), например есть циклы (while, for), операторы выбора (if, switch), функции работы с файловой системой и процессами (fopen, *dir, stat, unlink, popen, exec), функции ввода-вывода (fgets,fputs,printf) и множество других...

Цель данного раздела - краткое ознакомление с основами синтаксиса языка PHP. Более подробную информацию по конкретным составляющим синтаксиса PHP вы найдете в соответствующих разделах.


Комментарии в PHP скриптах

Написание практически любого скрипта не обходится без комментариев.

PHP поддерживает комметарии в стиле 'C', 'C++' и оболочки Unix. Например:

alert("Это тест"); // Это однострочный комментарий в стиле c++    
 
     /* Это многострочный комментарий    
         еще одна строка комментария */    
 
alert("Это еще один тест");    
 
alert("Последний тест"); # Это комментарий в стиле оболочки Unix 

Будьте внимательны, следите за отсутствием вложенных 'C'-комментариев, они могут появиться во время комментирования больших блоков:

 /*    
      alert("Это тест"); /* Этот комментарий вызовет проблему */    
 
  */ 

 

Переменные в PHP

Имена переменных обозначаются знаком $. То же самое "Привет, я - скрипт PHP! " можно получить следующим образом:

$message "Привет, я - скрипт PHP!";    
 
alert($message); 

Подробно о переменных в PHP здесь

 

Типы данных в PHP

PHP поддерживает восемь простых типов данных:

Четыре скалярных типа:

  • boolean (двоичные данные)
  • integer (целые числа)
  • float (числа с плавающей точкой или 'double')
  • string (строки)

Два смешанных типа:

  • array (массивы)
  • object (объекты)

И два специальных типа:

  • resource (ресурсы)
  • NULL ("пустые")

Существуют также несколько псевдотипов:

  • mixed (смешанные)
  • number (числа)
  • callback (обратного вызова)

Подробно о типах данных в PHP здесь


Выражения в PHP
Основными формами выражений являются константы и переменные. Например, если вы записываете "$a = 100", вы присваиваете '100' переменной $a:

$a 100



В приведенном примере $a - это переменная, = - это оператор присваивания, а 100 - это и есть выражения. Его значение 100.

Выражением может быть и переменная, если ей сопоставлено определенное значение:

$x 7
 
$y $x;  



В первой строке рассмотренного примера выражением является константа 7, а во второй строке - переменная $x, т.к. ранее ей было присвоено значение 7. $y = $x также является выражением.

Подробно о выражениях в PHP вы найдете здесь



Операторы PHP

Оператором называется нечто, состоящее из одного или более значений (выражений, если говорить на жаргоне программирования), которое можно вычислить как новое значение (таким образом, вся конструкция может рассматриваться как выражение).

Примеры операторов PHP:

Операторы присвоения:

$a = ($b 4) + 5;    
 </
p>  // результат: $a установлена значением 9, переменной $b присвоено 4. 




Комбинированные операторы:

$a 3
 
$a += 5// устанавливает $a значением 8, аналогично записи: $a = $a + 5; 
 
$b "Hello "
 
$b .= "There!"// устанавливает $b строкой "Hello There!",  как и $b = $b . "There!"; 




Строковые операторы:

$a "Hello "
 
$b $a "World!"// $b содержит строку "Hello World!" 
 
 
$a "Hello "
 
$a .= "World!";     // $a содержит строку "Hello World!" 



Существуют также логические операторы и операторы сравнения, однако их принято рассматривать в контексте управляющих конструкций языка.

Подробную информацию по операторам PHP вы найдете здесь.

 

Управляющие конструкции языка PHP

Основными конструкциями языка PHP являются:

  1. Условные операторы (if, else);
  2. Циклы (while, do-while, for, foreach, break, continue);
  3. Конструкции выбора (switch);
  4. Конструкции объявления (declare);
  5. Конструкции возврата значений (return);
  6. Конструкции включений (require, include).

Примеры конструкций языка PHP:

if ($a $balert("значение a больше, чем b"); 

 

Приведенный пример наглядно показывает использование конструкции if совместно с оператором сравнения ($a > $b).

В следующем примере если переменная $a не равна нулю, будет выведена строка "значение a истинно (true), то есть показано взаимодействие условного оператора (конструкции) if с логическим оператором:

if ($aalert("значение a истинно (true) "); 

А вот пример цикла while:

$x=0;   
while (
$x++<10alert($x);   
// Выводит 12345678910 

Информацию по всем управляющим конструкциям PHP вы можете получить здесь

 

Пользовательские функции в PHP

В любом языке программирования существуют подпрограммы. В языке C они называются функциями, в ассемблере - подпрограммами, а в Pascal существуют два вида подпрограмм: процедуры и функции.

В PHP такими подпрограммами являются пользовательские функции.

Подпрограмма - это специальным образом оформленный фрагмент программы, к которому можно обратиться из любого места внутри программы. Подпрограммы существенно упрощают жизнь программистам, улучшая читабельность исходного кода, а также сокращая его, поскольку отдельные фрагменты кода не нужно писать несколько раз.

Приведем пример пользовательской функции на PHP:

function funct() {   
$a 100;   
 alert$a );   
}   
funct(); 

Сценарий выводит 100.

Пользовательским функциям в PHP можно передавать аргументы и получать возвращаемые функциями значения.

Подробную информацию по пользовательским функциям PHP вы найдете здесь

Типы Данных

PHP поддерживает восемь простых типов данных:

Четыре скалярных типа:

  • boolean (двоичные данные)
  • integer (целые числа)
  • float (числа с плавающей точкой или 'double')
  • string (строки)

Два смешанных типа:

  • array (массивы)
  • object (объекты)

Строки (String)

Строка в PHP - это набор символов любой длины. В отличие от Си, строки могут содержать в себе также и нулевые символы, что никак не повлияет на программу. Иными словами, строки можно использовать для хранения бинарных данных. Длина строки ограничена только размером свободой оперативной памяти.

В PHP символ это то же самое, что и байт, это значит, что возможно ровно 256 различных символов. Это также означает, что PHP не имеет встроенной поддержки Unicode. Некоторую поддержку Unicode обеспечивают функции utf8_encode() и utf8_decode().

Строка легко может быть обработана при помощи стандартных функций, можно также непосредственно обратиться к любому ее символу.

Простой пример строковой переменной:

$a "Это просто текст, записанный в строковую переменную";    
 
alert$a ); //Выводит 'Это просто текст, записанный в строковую переменную' 

А теперь подробно разберем синтаксис типа данных string.

 

Синтаксис типа string (строк)

Строка может быть определена тремя различными способами.

  • одинарными кавычками

  • двойными кавычками

  • heredoc-синтаксисом


Определение строк одинарными кавычками:

Простейший способ определить строку - это заключить ее в одинарные кавычки (символ ').

Чтобы использовать одинарную кавычку внутри строки, как и во многих других языках, ее необходимо предварить символом обратной косой черты (\), т. е. экранировать ее. Если обратная косая черта должна идти перед одинарной кавычкой либо быть в конце строки, вам необходимо продублировать ее. Обратите внимание, что если вы попытаетесь экранировать любой другой символ, обратная косая черта также будет напечатана! Так что, как правило, нет необходимости экранировать саму обратную косую черту.

В отличие от двух других синтаксисов, переменные и экранирующие последовательности для специальных символов, встречающиеся в строках, заключенных в одинарные кавычки, не обрабатываются.

Приведем пример использования одинарных кавычек:

echo 'это простая строка';    
    
 echo 
'Также вы можете вставлять в строки    
 символ новой строки таким образом,    
 поскольку это нормально'
;    
    
 
// Выведет: Однажды Арнольд сказал: "I'll be back"    
 
alert'Однажды Арнольд сказал: "I\'ll be back"' );    
    
 
// Выведет: Вы удалили C:\*.*?    
 
alert('Вы удалили C:\\*.*?');    
    
 
// Выведет: Вы удалили C:\*.*?    
 
alert('Вы удалили C:\*.*?');    
    
 
// Выведет: Это не вставит: \n новую строку    
 
alert('Это не вставит: \n новую строку');    
    
 
// Выведет: Переменные $expand также $either не подставляются    
 
alert('Переменные $expand также $either не подставляются'); 

 

Определение строк двойными кавычками:

Если строка заключена в двойные кавычки ("), PHP распознает большее количество управляющих последовательностей для специальных символов:

Таблица управляющих последовательностей:

Последовательность Значение
\n новая строка (LF или 0x0A (10) в ASCII)
\r возврат каретки (CR или 0x0D (13) в ASCII)
\t горизонтальная табуляция (HT или 0x09 (9) в ASCII)
\\ обратная косая черта
\$ знак доллара
\" двойная кавычка

 

Еще раз напомним, что если вы захотите мнемнонизировать любой другой символ, обратная косая черта также будет напечатана!

Самым важным свойством строк в двойных кавычках является обработка переменных. Смотрите более подробно: обработка строк.

 

Определение строк heredoc-синтаксисом:

Другой способ определения строк - это использование heredoc-синтаксиса ("<<<"). После <<< необходимо указать идентификатор, затем идет строка, а потом этот же идентификатор, закрывающий вставку.

Закрывающий идентификатор должен начинаться в первом столбце строки. Кроме того, идентификатор должен соответствовать тем же правилам именования, что и все остальные метки в PHP: содержать только буквенно-цифровые символы и знак подчеркивания, и должен начинаться с нецифры или знака подчеркивания.

Внимание! Очень важно отметить, что строка с закрывающим идентификатором не содержит других символов, за исключением, возможно, точки с запятой (;). Это означает, что идентификатор не должен вводиться с отступом и что не может быть никаких пробелов или знаков табуляции до или после точки с запятой. Важно также понимать, что первым символом перед закрывающим идентификатором должен быть символ новой строки, определенный в вашей операционной системе. Например, на Windows® это \r.

Если это правило нарушено и закрывающий идентификатор не является "чистым", считается, что закрывающий идентификатор отсутствует и PHP продолжит его поиск дальше. Если в этом случае верный закрывающий идентификатор так и не будет найден, то это вызовет ошибку в обработке с номером строки в конце скрипта.

Heredoc-текст ведет себя так же, как и строка в двойных кавычках, при этом их не имея. Это означает, что вам нет необходимости экранировать кавычки в heredoc, но вы по-прежнему можете использовать вышеперечисленные управляющие последовательности. Переменные обрабатываются, но с применением сложных переменных внутри heredoc нужно быть также внимательным, как и при работе со строками.

Пример определения heredoc-строки:

$str = <<<EOD   
Пример строки,   
охватывающей несколько строчек,   
с использованием heredoc-синтаксиса.   
EOD;   
 

 

  • resource (ресурсы)
  • NULL ("пустые")

Существуют также несколько псевдотипов:

  • mixed (смешанные)
  • number (числа)
  • callback (обратного вызова)

Двоичные данные (boolean)

Это простейший тип. Он выражает истинность значения - это может быть либо TRUE, либо FALSE.

Чтобы определить булев тип, используйте ключевое слово TRUE или FALSE. Оба регистро-независимы.

$x True// присвоить $x значение TRUE 



// == это оператор, который проверяет
// эквивалентность и возвращает булево значение
if ($action == "показать_версию") {
     alert("Версия 1.23");
}

// это не обязательно...
if ($show_separators == TRUE) {
     alert("test");
}

// ...потому что вы можете просто написать
if ($show_separators) {
     alert("test");




Преобразование в тип Boolean

Для преобразования значения в булев тип используйте приведение типа (bool) или (boolean). Однако в большинстве случаев вам нет необходимости использовать приведение типа, поскольку значение будет автоматически преобразовано, если оператор, функция или управляющая конструкция требует булев аргумент.

При преобразовании в логический тип, следующие значения рассматриваются как FALSE:

  • Сам булев FALSE

  • целое 0 (ноль)

  • число с плавающей точкой 0.0 (ноль)

  • пустая строка и строка "0"

  • массив с нулевыми элементами

  • объект с нулевыми переменными-членами

  • специальный тип NULL (включая неустановленные переменные)

 

Все остальные значения рассматриваются как TRUE (включая любой ресурс).

Внимание! -1 считается TRUE, как и любое ненулевое (отрицательное или положительное) число!

 

Целые числа (Integer)

Целое - это число из множества Z = {..., -2, -1, 0, 1, 2, ...}, обычно длиной 32 бита (от –2 147 483 648 до 2 147 483 647).

Целые могут быть указаны в десятичной, шестнадцатеричной или восьмеричной системе счисления, по желанию, с предшествующим знаком (- или +).

Если вы используете восьмеричную систему счисления, вы должны предварить число 0 (нулем), для использования шестнадцатеричной системы нужно поставить перед числом 0x.

$a 1234// десятичное число   
$a = -123// отрицательное число   
$a 0123// восьмеричное число (эквивалентно 83 в десятичной системе)   
$a 0x1A// шестнадцатеричное число (эквивалентно 26 в десятичной системе) 

Размер целого зависит от платформы, хотя, как правило, максимальное значение около двух миллиардов (это 32-битное знаковое). PHP не поддерживает беззнаковые целые.


Превышение размера целого

Если вы определите число, превышающее пределы целого типа, оно будет интерпретировано как число с плавающей точкой. Также, если вы используете оператор, результатом работы которого будет число, превышающее пределы целого, вместо него будет возвращено число с плавающей точкой.

$large_number =  2147483647;   
var_dump($large_number);   
// вывод: int(2147483647)   
  
$large_number =  2147483648;   
var_dump($large_number);   
// вывод: float(2147483648)   
  
// это справедливо и для шестнадцатеричных целых:   
var_dump0x80000000 );   
// вывод: float(2147483648)   
  
$million 1000000;   
$large_number =  50000 $million;   
var_dump($large_number);   
// вывод: float(50000000000) 

в PHP не существует оператора деления целых. Результатом 1/2 будет число с плавающей точкой 0.5. Вы можете привести значение к целому, что всегда округляет его в меньшую сторону, либо использовать функцию round().

 

Преобразование в целое (integer)

Для несомненного преобразования значения в целое используйте приведение типа (int) или (integer). Однако в большинстве случаев вам нет необходимости использовать приведение типа, поскольку значение будет автоматически преобразовано, если оператор, функция или управляющая конструкция требует целый аргумент. Вы также можете преобразовать значение в целое при помощи функции intval().

$x 2.56;   
$y = (int)$x// y = 2   
$y = (integer)$x// y = 2 тоже самое   
$y intval($x); // y = 2 с помощью функции 

 

Преобразование типа integer в тип boolean

FALSE преобразуется в 0 (ноль), а TRUE - в 1 (единицу).

 

Преобразование типа integer в тип float

При преобразовании из числа с плавающей точкой в целое, число будет округлено в сторону нуля.

Если число с плавающей точкой превышает пределы целого (как правило, это +/- 2.15e+9 = 2^31), результат будет неопределенным, так как целое не имеет достаточной точности, чтобы вернуть верный результат. В этом случае не будет выведено ни предупреждения, ни даже замечания!

Внимание! Никогда не приводите неизвестную дробь к целому, так как это может иногда дать неожиданные результаты (подробнее об этой особенности здесь) Пример ошибочного преобразования:

alert( (int) ( (0.1+0.7) * 10 ) ); // выводит 7! (ошибка!)
 

Числа с плавающей точкой (Float)

Double - вещественное число довольно большой точности (ее должно хватить для подавляющего большинства математических вычислений).

Числа с плавающей точкой (они же числа двойной точности или действительные числа) могут быть определены при помощи любого из следующих синтаксисов:

$a 1.234;   
$b 1.2e3;   
$c 7E-10

Размер целого зависит от платформы, хотя максимум, как правило, ~1.8e308 с точностью около 14 десятичных цифр (это 64-битный IEEE-формат).

 

Точность числа с плавающей точкой

Довольно часто простые десятичные дроби вроде 0.1 или 0.7 не могут быть преобразованы в свои внутренние двоичные аналоги без небольшой потери точности. Это может привести к неожиданным результатам: например, floor((0.1+0.7)*10) скорее всего возвратит 7 вместо ожидаемой 8 как результат внутреннего представления числа, являющегося в действительности чем-то вроде 7.9999999999....

Это связано с невозможностью точно выразить некоторые дроби в десятичной системе счисления конечным числом цифр. Например, 1/3 в десятичной форме принимает вид 0.3333333. . ..

Работа со строками

Если строка определяется в двойных кавычках, либо при помощи heredoc, переменные внутри нее обрабатываются.

Существует два типа синтаксиса: простой и сложный. Простой синтаксис более легок и удобен. Он дает возможность обработки переменной, значения массива (array) или свойства объекта (object).

Сложный синтаксис был введен в PHP 4 и может быть распознан по фигурным скобкам, окружающих выражение.


Простой синтаксис

Если интерпретатор встречает знак доллара ($), он захватывает так много символов, сколько возможно, чтобы сформировать правильное имя переменной. Если вы хотите точно определить конец имени, заключайте имя переменной в фигурные скобки.

$beer 'Heineken';   
alert("$beer's taste is great"); // работает, "'" это неверный символ для имени переменной   
alert("He drank some $beers");   // не работает, 's' это верный символ для имени переменной   
alert("He drank some ${beer}s"); // работает   
alert("He drank some {$beer}s"); // работает 

 

Точно также могут быть обработаны элемент массива (array) или свойство объекта (object). В индексах массива закрывающая квадратная скобка (]) обозначает конец определения индекса. Для свойств объекта применяются те же правила, что и для простых переменных, хотя с ними невозможен трюк, как с переменными.

// Эти примеры специфически об использовании массивов внутри   
// строк. Вне строк всегда заключайте строковые ключи вашего   
// массива в кавычки и не используйте вне строк {скобки}.   
  
$fruits = array('strawberry' => 'red''banana' => 'yellow');   
  
// Работает, но заметьте, что вне кавычек строки это работает по-другому   
alert("A banana is $fruits[banana].");   
  
//Работает   
alert("A banana is {$fruits['banana']}.");   
  
// Работает, но PHP, как описано ниже, сначала ищет   
// константу banana.   
alert("A banana is {$fruits[banana]}.");   
  
// Не работает, используйте фигурные скобки. Это вызовет ошибку обработки.   
alert("A banana is $fruits['banana'].");   
  
// Работает   
alert("A banana is " $fruits['banana'] . ".");   
  
// Работает   
alert("This square is $square->width meters broad.");   
  
// Не работает. Для решения см. сложный синтаксис.   
alert("This square is $square->width00 centimeters broad."); 

Для более сложных задач вы можете использовать сложный синтаксис.

 

Сложный (фигурный) синтаксис

Данный синтаксис называется сложным не потому, что труден в понимании, а потому что позволяет использовать сложные выражения.

Фактически, вы можете включить любое значение, находящееся в пространстве имени в строке с этим синтаксисом. Вы просто записываете выражение таким же образом, как и вне строки, а затем заключаете его в { и }. Поскольку вы не можете экранировать '{', этот синтаксис будет распознаваться только когда $ следует непосредственно за {. (Используйте "{\$" или "\{$" чтобы отобразить "{$"). Несколько поясняющих примеров:

$great 'fantastic';   
  
// Не работает, выведет: This is { fantastic}   
alert("This is { $great}");   
  
// Работает, выведет: This is fantastic   
alert("This is {$great}");   
alert("This is ${great}");   
  
// Работает   
alert("Этот квадрат шириной {$square->width}00 сантиметров.");   
  
// Работает   
alert("Это работает: {$arr[4][3]}");   
  
// Это неверно по той же причине, что и $foo[bar] неверно вне   
// строки. Другими словами, это по-прежнему будет работать,   
// но поскольку PHP сначала ищет константу foo, это вызовет   
// ошибку уровня E_NOTICE (неопределенная константа).   
alert("Это неправильно: {$arr[foo][3]}");   
  
// Работает. При использовании многомерных массивов, внутри   
// строк всегда используйте фигурные скобки   
alert("Это работает: {$arr['foo'][3]}");   
  
// Работает.   
alert("Это работает: " $arr['foo'][3]);   
  
alert("Вы даже можете записать {$obj->values[3]->name}");   
  
alert("Это значение переменной по имени $name{${$name}}"); 

 

Доступ к символу в строке и его изменение:

Символы в строках можно использовать и модифицировать, определив их смещение относительно начала строки, начиная с нуля, в фигурных скобках после строки. Приведем примеры:

// Получение первого символа строки   
$str 'Это тест.';   
$first $str[0];   
  
// Получение третьего символа строки   
$third $str[2];   
  
// Получение последнего символа строки   
$str 'Это все еще тест.';   
$last $str[strlen($str)-1];   
  
// Изменение последнего символа строки   
$str 'Посмотри на море';   
$str[strlen($str)-1] = 'я'

 

Строковые функции и операторы

Строковые операторы

Конкатенация строк:

В различных языках программирования используются различные операторы конкатенации (объединения) строк. Например, в Pascal используется оператор "+". Использование в PHP оператора "+" для конкатенации строк некорректно: если строки содержат числа, то вместо объединения строк будет выполнена операция сложения двух чисел.

В PHP есть два оператора, выполняющие конкатенацию.

Первый - оператор конкатенации ('.'), который возвращает объединение левого и правого аргумента.

Второй - оператор присвоения с конкатенацией, который присоединяет правый аргумент к левому.

Приведем конкретный пример:

$a "Hello ";   
$b $a "World!"// $b содержит строку "Hello World!" - Это конкатенация   
  
$a "Hello ";   
$a .= "World!";     // $a содержит строку "Hello World!" - Это присвоение с конкатенацией  

 

Операторы сравнения строк

Для сравнения строк не рекомендуется использовать операторы сравнения == и !=, поскольку они требуют преобразования типов. Пример:

$x=0;   
$y=1;   
if (
$x == "") echo "<p>x - пустая строка</p>";   
if (
$y == "") echo "<p>y - пустая строка</p>";   
// Выводит:   
// x - пустая строка 

Данный скрипт сообщает нам, что $x - пустая строка. Это связано с тем, что пустая строка ("") трактуется прежде всего как 0, а только затем - как "пусто". В PHP операнды сравниваются, как строки, только в том случае, если оба они - строки. В противном случае они сравниваются как числа. При этом любая строка, которую PHP не удается перевести в число (в том числе и пустая строка), будет восприниматься как 0.

Примеры сравнения строк:

$x="Строка";   
$y="Строка";   
$z="Строчка";   
if (
$x == $zalert("Строка X равна строке Z");   
if (
$x == $yalert("Строка X равна строке Y");   
if (
$x != $zalert("Строка X НЕ равна строке Z");   
// Выводит:   
// Строка X равна строке Y   
// Строка X НЕ равна строке Z 

Чтобы избежать путаницы и преобразования типов, рекомендуется пользоваться оператором эквивалентности при сравнении строк. Оператор эквивалентности позволяет всегда корректно сравнивать строки, поскольку сравнивает величины и по значению, и по типу:

$x="Строка";   
$y="Строка";   
$z="Строчка";   
if (
$x === $zalert("Строка X равна строке Z");   
if (
$x === $yalert("Строка X равна строке Y");   
if (
$x !== $zalert("Строка X НЕ равна строке Z");   
// Выводит:   
// Строка X равна строке Y   
// Строка X НЕ равна строке Z 

Переменные

Как и в любом другом языке программирования, в PHP существует такое понятие, как переменная.

При программировании на PHP можно не скупиться на объявление новых переменных. Принципы экономии памяти, которые были актуальны несколько лет назад, сегодня в расчет не принимаются. Однако, при хранении в переменных больших объемов памяти, лучше удалять неиспользуемые переменные, используя оператор Unset.

Вообще, переменная - это область оперативной памяти, доступ к которой осуществляется по имени. Все данные, с которыми работает программа, хранятся в виде переменных (исключение — константа, которая, впрочем, может содержать только число или строку). Такого понятия, как указатель (как в Си), в PHP не существует — при присвоении переменная копируется один-в-один, какую бы сложную структуру она ни имела. Тем не менее, в PHP, начиная с версии 4, существует понятие ссылок — жестких и символических.

Имена всех переменных в PHP должны начинаться со знака $ — так интерпретатору значительно легче "понять" и отличить их, например, в строках. Имена переменных чувствительны к регистру букв: например, $var — не то же самое, что $Var или $VAR:

В официальной документации PHP указано, что имя переменной может состоять не только из букв "Латиницы" и цифр, но также и из любых символов, код ASCII которых старше 127, — в частности, и из символов кириллицы, то есть "русских" букв! Однако не рекоммендуется применять кириллицу в именах переменных — хотя бы из-за того, что в различных кодировках ее буквы имеют различные коды. Впрочем, поэксперементируйте и делайте так, как вам будет удобно.

Можно сказать, что переменные в PHP — это особые объекты, которые могут содержать в буквальном смысле все, что угодно.

Приведем некоторые примеры переменных в PHP:

$var "Bob";   
$Var "Joe";   
echo 
"$var$Var";      // выведет "Bob, Joe"   
  
$4site 'not yet';     // неверно; начинается с цифры   
$_4site 'not yet';    // верно; начинается с символа подчеркивания   
$tдyte 'mansikka';    // верно; 'д' это (Дополнительный) ASCII 228. 

Отличительным преимуществом PHP является то, что в PHP не нужно ни описывать переменные явно, ни указывать их тип. Интерпретатор все это делает сам. Однако иногда он может ошибаться (например, если в текстовой строке на самом деле задано десятичное число), поэтому изредка возникает необходимость явно указывать, какой же тип имеет то или иное выражение.
Чуть чаще возникает потребность узнать тип переменной (например, переданной в параметрах функции) прямо во время выполнения программы.