Разница между одинарными и двойными кавычками
Всё, что в операторе вывода находится внутри одинарных кавычек, выводится как текст. А в тексте в двойных кавычках можно вставлять переменные.
$car = "Opel";
оператор echo 'Марка машины - $car'
выведет Марка машины - $car
а оператор echo "Марка машины - $car"
выведет Марка машины - Opel
Переменная внутри кавычек
Если после переменной сразу без пробела идут текст или цифры, то РНР принимает их за продолжение имени переменной.
Чтобы этого избежать, нужно взять переменную в фигурные скобки.
$money = 500;
оператор echo "Цена - $moneyруб."
выведет "Цена - ."
а оператор echo "Цена - {$money}руб."
выведет "Цена - 500руб."
Тэги <?php и <?
Почему лучше использовать полный вариант тэга - <?php, - нежели сокращённый - <?, - вариант?
Потому, что в настройках сервере, который будет выполнять этот код, может быть отключено использование коротких тэгов, и тогда сокращённый вариант не сработает.
С ВОМ или без
BOM - Byte Order Mark - метка порядка байтов, которая вставляется в начало файла, когда преобразовываешь его кодировку в формат "Юникод" (он же UTF-8). Эта метка сразу говорит всем программам, открывающим этот фаль, что он закодирован в "Юникод".
Всё это хорошо, но в РНР есть функция header, которая много чего может сообщить браузеру, но только при одном условии - если она будет первым, что браузер увидит. Primae noctis, так сказать.
Тэг <?php браузер не видит, потому что это тэг обрабатывается веб-сервером и до браузера не доходит. И, вроде бы, функция header - самая первая. Но есть один нюанс - эта метка ВОМ, котороую не видно, но она есть, как тот суслик из фильма. Из-за неё, родимой, браузер выдаст ошибку " Warning: Cannot modify header information - headers already sent by..." (Предупреждаю: Не могу изменить заголовочную информацию - заголовки уже того...)
Чтобы функция header заработала, нужно перекодировать файл в UTF-8 без BOM.