Уроки по PHP: типы переменных, экранирование, спецсимволы и синтаксис heredoc в PHP

"Все аспекты самостоятельного создания и продвижения сайтов
от практика с многолетним опытом." — блог Рудь Сергея
info@site-on.net
Заметка: активирована адаптивная версия сайта, которая автоматически подстраивается под небольшой размер Вашего браузера и скрывает некоторые детали сайта для удобства чтения. Приятного просмотра!
11.04.2013

Рад снова приветствовать всех на страницах блога посвящённому всем тонкостям успешного создания и продвижения сайтов – Site on! В сегодняшнем уроке по PHP мы затронем такие темы как: типы переменных, экранирование, спецсимволы, а также синтаксис heredoc в PHP.

Типы переменных

PHP имеет восемь различных типов переменных, из них

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

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

2 специальных типа:

Прежде чем перейти к рассмотрению каждого из типов более подробно, стоит уточнить, что PHP НЕ строго типизированный язык, а язык с динамической типизацией. Это значит, что нам не нужно заранее (при создании) объявлять тип каждой переменной. PHP сам догадается, какой тип имеет та или иная переменная, исходя из того, что мы в эту переменную положим. Это также значит, что в отличие от языков со строгой типизаций мы можем в переменную с числом (integer) взять и положить строку (string) и это не будет ошибкой! Это одна из особенностей PHP, которая очень нравится людям (новичкам), ранее не имевшим дело с программированием. Как правило, в итоге все приходят к тому, что это минус языка, а не плюс.

Boolean (логический) – простейший тип. Может принимать всего 2 значения: true или false (верно или неверно), они регистра-независимы (можно писать TRUE, trUe и тд.). Наглядный пример:

<?php
$name = true;
$name2 = false;

echo $name, '<br />', $name2; ?>

Результат:

простейший тип PHP

Как видите, браузер не понимает булев тип, в отличие от PHP, поэтому при попытке вывести true или false он выведет на страницу число 1 или пустую строку.

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

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

Идём далее: разница между integer и float, как вы уже могли догадаться – в точке :) Смотрим пример:

<?php
$int = 5; // десятичное число
$int = -5; // отрицательное число
$int = 05; // восьмеричное число
$int = 0x1A; // шестнадцатеричное число

//Числа с плавающей точкой (вещественные): $flt = 1.4; $flt = 1.2e3; $flt = 7E-10; ?>

Однако самым часто применяемым типом в PHP можно считать именно строки (string). Строки можно записывать либо в одинарных, либо в двойных кавычках, но записывать строки в двойных кавычках я никогда и никому не советую, так как тем самым вы заставляете интерпретатор PHP «парсить» вашу строку на наличие переменных в ней, чем хоть и незначительно, но замедляете работу. Даже если вы хотите использовать в вашей строке переменные – это можно сделать с помощью одинарных кавычек + конкатенации (склеивание двух и более строк в одну). Для чего тогда двойные кавычки вообще нужны? Например, когда мы хотим использовать спецсимволы (\n, \r и тд.), но о них немного позже.

Также стоит отметить, что использование одинарных кавычек + конкатенации делает код гораздо читабельней, чем если всё без разбора засовывать в двойные кавычки. Но хватит предисловий, сейчас вы сами всё увидите и поймёте:

<?php
header('Content-Type: text/html; charset=utf-8');

$number = 2; //integer $hand1 = "Количество рук у человека:"; //string + заставляем парсить на наличие переменных $hand2 = 'Количество рук у человека:'; //string
//добавим в эти строки переменную $number: $hand1 = "Количество рук у человека: $number и ещё текст..."; // НЕ рекомендую $hand2 = 'Количество рук у человека: ' . $number . ' и ещё текст...'; // рекомендую!
echo $hand1, '<br />', $hand2; ?>

Результат:

строковый тип переменных

Подробнее о конкатенации мы поговорим в следующей статье.

Далее мы рассмотрим такой тип переменных в PHP как NULL. Здесь всё очень просто, переменная считается NULL если:

Изучение оставшихся типов переменных на данном этапе было бы бессмысленным. С остальными типами мы столкнёмся и разберём их при более глубоком изучении PHP.

Экранирование в PHP

А что если мы в нашей строке не хотим доставать значение переменной, а хотим написать буквально $number? Рассмотрим два варианта:

<?php
$number = 2;

$hand1 = "Количество рук у человека: \$number и ещё текст..."; // НЕ рекомендую $hand2 = 'Количество рук у человека: $number и ещё текст...'; // рекомендую!
echo $hand1, '<br />', $hand2; ?>

Результат:

типы переменных в PHP

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

Во втором варианте (с одинарными кавычками) как вы уже знаете – PHP интерпретатор даже не пытался найти переменных в строке, а потому экранирование не потребовалось.

Далее про экранирование: в одинарных кавычках ничего и никогда экранировать не нужно, попросту нечего. От экранирования мы плавно переходим к уже упомянутым спецсимволам в PHP.

Спецсимволы в PHP

Специально для читателей блога Site on! я подготовил небольшой список специальных символов в языке программирования PHP:

Посмотрим на работу спецсимволов на примере \n – спецсимвол, который делает перевод на новую строку (как Энтер), однако браузеры не понимают (и не должны) его и игнорируют, но результат его работы можно посмотреть в исходном коде страницы:

<?php
$rule = "пример работы \n в двойных кавычках";
$rule2 = 'пример работы \n в одинарный кавычках';

echo $rule, '<br />', $rule2; ?>

Результат:

спецсимвол

Исходный код (Ctrl + U):

спецсимволы в PHP

Если для посетителей в браузере спецсимвол \n никак не отображается, тогда в чём его смысл?

Во-первых, с помощью спецсимволов и \n в частности можно удобно форматировать код на странице (как в примере выше).

Во-вторых, \n можно использовать, например, при операциях записи в файл, чтобы сделать перенос (Энтер) и продолжить запись на новой строке.

Альтернативой такого форматирования является heredoc.

Синтаксис heredoc в PHP

Пример:

<?php
echo <<<METKA
Пример форматирования строки с помощью
    heredoc синтаксиса
  как вы можете заметить, я не использую спецсимволы
чтобы сделать табуляцию или перенос строки в исходном коде, при этом на
экран всё выводится в обычном режиме.
METKA;
?>

Результат:

heredoc

Исходный код (Ctrl + U):

синтаксис heredoc

Результат говорит сам за себя, теперь давайте разберемся, как же всё устроено:

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

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

Ваш email:
Вы можете помочь развитию проекта, сделав всего 1 клик:
Спасибо!
Пожалуйста, прокомментируйте, как Вам моя статья?
Имя:
Комментарий:

Если Вы хотите вставить код, пожалуйста, заключайте его в [code][/code]

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

E-mail:


Защита от спама: пожалуйста, напишите слово "сел" справа налево
Ответ:
Подписаться на новые комментарии без комментирования - Email:
Защита от спама: пожалуйста, напишите слово "сел" справа налево
Ответ:

25.11.2014 18:59:02 Максим:
в примерах <br /> - пробел лишний
25.11.2014 20:08:46 Сергей отвечает:
Его можно ставить, можно и не ставить. На работу это не влияет. А вообще в HTML 5 и слеши не нужны, так что можно просто:<br>

Ответить на комментарий


27.01.2015 13:13:13 Иван:
Честно говоря, не понял, что за идентификатор имеется в виду. Имеется в виду id (типа id = "name"?), который присваивается определённому элементу в HTML - DIV-У, таблице и т.д.? По-поводу \n вообще ничего не понял. Короче, по этой теме мне лично вообще ничего не понятно - для чего всё это надо??? Исходный код страницы и код в файле, в котором я пишу сайт (в данном случае PHP-файл) - это не одно и то же??? Объясни пожалуйста.

Ответить на комментарий

Использую для работы
Мои расширения
Свежие статьи
Рекомендую
Горячо обсуждаемые
Подписка
  • Следовать в twitter:
  • Подписаться по RSS:
  • Подписаться по E-mail:
  • Следить ВКонтакте:
  • Следить на Facebook:
Пользовательское соглашение об условиях использования сайта и Политика конфиденциальности
Перепечатывание или копирование материалов сайта (текста, изображений и другого содержимого) для их публичного или коммерческого использования в сети Интернет, либо в печатных изданиях строго запрещены. При нарушении данного правила, с нашей стороны будут предприняты соответствующие меры, вплоть до судебной жалобы.
© site-on.net
Шрифт: +стандартно-