При разработке на PHP часто требуется узнать значение той или иной переменной. При этом обычный var_dump или print_r далеко не идеально выполняет возложенную на него функцию. Если массив/объект большой, то просто невозможно понять что к чему относится и т.д. Устав мучаться с этой проблемой мы разработали для себя простенькую пару функций, способные вывести массив в действительно удобочитаемом виде. Вывод представляет собой древовидный список ключей->значений, способный сворачиваться/разворачиваться с помощью современного html-тега 'details'.
Функции представляют из себя основную функцию, которую и надо вызывать, и вспомогательную для неё, рекурсивную функцию, обходящую все элементы массива/объекта. CSS для них прописан самый простейший (отступ для дочерних элементов), а потому Вы можете запросто разукрасить их как Вам будет удобно. Код представлен ниже.
/**
* Выводит массив в виде дерева
*
* @param mixed - Массив или объект, который надо обойти
* @param boolean - Раскрыть дерево элементов по-умолчанию или нет?
*
* @return void
*/
function pretty_print($in,$opened = true){
if($opened)
$opened = ' open';
if(is_object($in) or is_array($in)){
echo '<div>';
echo '<details'.$opened.'>';
echo '<summary>';
echo (is_object($in)) ? 'Object {'.count((array)$in).'}':'Array ['.count($in).']';
echo '</summary>';
pretty_print_rec($in, $opened);
echo '</details>';
echo '</div>';
}
}
function pretty_print_rec($in, $opened, $margin = 10){
if(!is_object($in) && !is_array($in))
return;
foreach($in as $key => $value){
if(is_object($value) or is_array($value)){
echo '<details style="margin-left:'.$margin.'px" '.$opened.'>';
echo '<summary>';
echo (is_object($value)) ? $key.' {'.count((array)$value).'}':$key.' ['.count($value).']';
echo '</summary>';
pretty_print_rec($value, $opened, $margin+10);
echo '</details>';
}
else{
switch(gettype($value)){
case 'string':
$bgc = 'red';
break;
case 'integer':
$bgc = 'green';
break;
}
echo '<div style="margin-left:'.$margin.'px">'.$key . ' : <span style="color:'.$bgc.'">' . $value .'</span> ('.gettype($value).')</div>';
}
}
}
Как видите - функции довольно просты. Для работы нужно лишь вместо print_r($array) использовать pretty_print($array) или pretty_print($array, false) чтобы оставить дерево закрытым по-умолчанию на выходе.
Если же лень подключать функции и т.п., то мы для Вас подготовили более простую возможность использовать данную фишку. Для этого просто передайте в https://www.w3strict.ru/ppp.php сериализованный функцией serialize() массив или объект в качестве параметра 'print' и вы получите это красивое дерево элементов, которое Вы можете просто вывести у Вас на сайте обычным эхо. То есть достатчно просто использовать echo+file_get_contents у себя на сайте для получения удобочитаемого вывода Вашей переменной c массивом/объектом, например echo file_get_contents('https://www.w3strict.ru/ppp.php?print='.urlencode(serialize($VASH_MASSIV)));, хотя крайне желательно использовать $_POST для корректной работы. Чтобы по-умолчанию дерево было закрыто передайте также параметр opened, равный true

Оставьте свой комментарий
Войдите под своим именем, чтобы оставить комментарий
Оставить комментарий от имени гостя