Рослый print php. PHP — print_r и var_dump, ускоряем работу простыми функциями. Зачем нужны print_r и var_dump
В прошлый раз мы разбирали с вами тему массивов в php , а сегодня мы с Вами разберем функцию, которая называется print_r() . Данная функция является отладочной, и предназначена нам для того, чтобы мы могли в удобном виде просмотреть информацию о переменной. Почему я вначале темы затронул массивы, а это потому, что лучше всего при помощи этой функции просматривать массивы. Сейчас Вы в этом убедитесь.
$array
= array(5
, 23
, "Denis"
)
;
print_r($array)
;
?>
Мы использовали массив из прошлого урока, и применили к нему функцию print_r . Показывать результат выполнения этой функции я не вижу смысла, просто напишите этот код и посмотрите результат в браузере. Там мы увидим, ключевое слово Array , и в скобках будут последовательно перечисляться индексы и их значения. Таким образом, мы можем просматривать даже самые большие массивы при помощи одной строчки. Это все, что я хотел рассказать про эту функцию. Вот такая сегодня получилась маленькая, легкая, а самое главное полезная статья. До скорой встречи!
В php есть жизненно необходимые функции, без которых разработчику просто не обойтись. Речь пойдет о print_r и немного про var_dump 🙂
Зачем нужны print_r и var_dump?
print_r чаще всего используют для массивов и основной задачей является именно узнать, какие ключи (если это ассоциативный массив или с большим уровнем вложенности многомерный) и значения находятся в массиве. Записывается следующим образом:
$array = array(1,2,3,4,5,6,7,8,9); print_r($array); ?>
Нам на экраны выдаст следующий результат:
Array ( => 1 => 2 => 3 => 4 => 5 => 6 => 7 => 8 => 9)
Несмотря на свою простоту, данный массив сложно читается, а если бы его структура состояла из нескольких уровней, то найти нужную информацию было бы очень затруднительно. К счастью, в HTML есть тег, который поможет с этим справиться, это тег pre :
Echo "
"; print_r($arg); echo "";
Как видно из кода, print_r записывается между тегами pre, и в результате видим следующую картину:
Array ( => 1 => 2 => 3 => 4 => 5 => 6 => 7 => 8 => 9)
Особенность тега pre
еще и в том, что он отображает все символы пробелов, если вы указываете много пробелов, они записываются как один:
«По умолчанию, любое количество пробелов идущих в коде подряд, на веб-странице показывается как один.»
То есть, такая запись:
Привет как дела?
Привет как дела?
Для массивов считаю что print_r это инструмент номер один 🙂
Зачем нужен var_dump?
Для обычных переменный, которые содержат строки, числа и т.д. есть простые способы вывода — echo и print . Но иногда этого недостаточно, в PHP у каждого значения есть свой тип . Есть правда неприятная особенность, тип может меняться, и запись:
Echo $a = 15 + "19";
Выдаст следующее значение:
Хотя мы передали одно число и одну строку. var_dump позволяет узнать к какому типу данных относится значение:
int сокращение от integer — целое число. Записывается не сложнее чем print_r:
Echo "
"; var_dump($arg); echo "";
Тип данных это важная вещь, но лично я print_r`ом пользуюсь гораздо чаще.
print_r и var_dump в 1С-Битрикс
В битриксе есть файл, который выполняется при каждой загрузке страницы — init.php , и для того чтобы каждый раз не писать много кода, можно записать 2 простые функции:
function pr($arg){ echo "
"; print_r($arg); echo ""; } function vd($arg) { echo "
"; var_dump($arg); echo ""; }
После записи можно передавать переменную, и что самое главное, массив. Запись для вызова будет следующая.
Для своего удобства я написал аналог функции print_r . Сразу покажу, чем она отличается:
UPD: добавлена разметка и стиль для корректного отображения пустых массивов и объектов.
UPD: добавлено отображение количества дочерних элементов массива или свойств объекта (число справа от названия ключа массива).
UPD: добавлена возможность сворачивать дочерние массивы массива (клик по количеству дочерних).
UPD: добавлено отображение файла и строки, откуда была вызвана функция.
UPD: теперь параметры в функцию можно передавать не массивом, а поштучно, причём в любом порядке.
Что функция умеет
- выводить скалярные переменные, массивы, объекты, ресурсы;
- выделять цветом тип данных;
- выделять цветом область видимости свойств;
- явно отображать значения булевых переменных и NULL ;
- выводить тип ресурса;
- автоматически обрезать длинные строки;
- выводить массив в виде дерева, с возможностью сворачивания узлов (ради чего всё это было затеяно);
- выводить дерево в свёрнутом виде или развёрнутым до определённого ключа;
- отображать файл и строку, откуда была вызвана функция;
- засекать время, прошедшее между двумя вызовами функции;
- искать текст в ключах и значениях массивов.
И самое главное
Никаких внешних зависимостей!
Как использовать
Нужно подключить файл nf_pp.php
Include "nf_pp.php";
и можно пользоваться
Pp($val);
Опции
Вторым аргументом в функцию можно передать массив параметров.
Pp($val, array("trimString" => 0));
Доступны такие опции:
UPD: мне надоело передавать параметры в функцию массивом и я сделал, чтобы их можно было передавать прямо так, причём в любом порядке. Пример:
Pp($val, 300, "КириЛлиЦА");
Pp($val, "КириЛлиЦА", 0);
Pp($val, "КириЛлиЦА");
Парамертры определяются по типу. Если передано число, то это — trimString , если булев параметр, то это — autoCollapsed ; если строка или массив, то это — autoOpen .
Примеры использования
Просто вывести массив
Pp($val);
Вывести массив в свёрнутом виде
Pp($val, array("autoCollapsed" => TRUE));
Вывести массив, раскрытый до ключей «c» и «subarray»
Pp($val, array("autoOpen" => array("c", "subarray")));
Вывести массив, раскрытый до ключа «c»
Pp($val, array("autoOpen" => array("c")));
Pp($val, array("autoOpen" => "c"));
print_r — Выводит удобочитаемую информацию о переменной
Описание
print_r() выводит информацию о переменной в удобочитаемом виде.
print_r() , var_dump() и var_export() могут также показывать защищенные (protected) и закрытые (private) атрибуты объектов в PHP 5. Статические элементы класса не будут отображены.
Следует помнить, что print_r() установит внутренний указатель массива в его конец. Используйте функцию reset() для установки его в начало массива.
Список параметров
expression
Выражение для вывода на экран.
returnЕсли Вы хотите перехватить вывод print_r() , используйте параметр return . Если его значение равно TRUE , то print_r() вернет результат вывода вместо вывода в браузер (который производится по умолчанию).
Возвращаемые значения
Если в функцию передаются значения типов string , integer или float , будет напечатано само значение. Если передается массив array , значениия будут напечатаны в формате, показывающем ключи и елементы массива. Аналогичный формат вывода используется для объектов.
Примечания
Замечание :
Эта функция использует внутреннюю буферизацию вывода с этим параметром, поэтому она не может быть использована внутри коллбэк-функции ob_start() .
Список изменений
Примеры
Пример #1 Пример использования print_r()
$a
= array ("a"
=>
"apple"
,
"b"
=>
"banana"
,
"c"
=> array ("x"
,
"y"
,
"z"
));
print_r
($a
);
?>
Результат выполнения данного примера:
Array ([a] => apple [b] => banana [c] => Array ( => x => y => z))