Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Выводим красивый массив в виде дерева.
- * @param $in Массив который нам нужно вывести
- * @param $config Массив настроек не обязателен
- */
- function pr($in, $config = array()) {
- $die = ($config['die'] === 0) ? false : true; // Заканчивать скрипт после вывода?
- $btn = ($config['btn'] === 0) ? false : true; // Заканчивать скрипт после вывода?
- $title = $config['name'] ? $config['name'] : ""; // Название массива
- $co = $config['co'] ? $config['co'] : 2; // Сколько веток будет открыто?
- $opened = $config['opened'] ? "" : "open"; // Атрибут для details если нужно раскрыть
- # Кнопки закрытия и раскрытия всех блоков.
- if ($btn) {
- print '<span style="position: fixed; top: 5px; right: 5px; padding: 3px; margin: 10px; display: inline-block; background-color: #444; color: #fff; cursor: pointer;"
- onclick="Array.from(document.getElementsByTagName(\'details\')).forEach(function(el){el.removeAttribute(\'open\');})">Свернуть все.</span>';
- print '<span style="position: fixed; top: 35px; right: 5px; padding: 3px; margin: 10px; display: inline-block; background-color: #444; color: #fff; cursor: pointer;"
- onclick="Array.from(document.getElementsByTagName(\'details\')).forEach(function(el){el.setAttribute(\'open\', 1);})">Развернуть все.</span>';
- }
- # Если это Объект или Массив то
- if(is_object($in) or is_array($in)) {
- print '<div>';
- print '<details '.$opened.' style="background-color: #f9f9f9; padding-bottom: 10px; border: 1px solid #f5f5f5">';
- print '<summary style="padding: 10px; background-color: #359296; color: #fff; font-weight: 600; margin-bottom: 10px;">';
- print (is_object($in)) ? ($title ? $title.': ' : '').'Object {'.count((array)$in).'}' : ($title ? $title.': ' : '').'Array ['.count($in).']';
- print '</summary>';
- ppr($in, $opened, 10, 1, $co);
- print '</details>';
- print '</div>';
- }
- # Если это просто строка с текстом то
- else {
- print '<div>';
- print '<details '.$opened.' style="background-color: #f9f9f9; padding-bottom: 10px; border: 1px solid #f5f5f5">';
- print '<summary style="padding: 10px; background-color: #359296; color: #fff; font-weight: 600; margin-bottom: 10px;">';
- print $title ? $title : "Произвольный текст";
- print '</summary>';
- print "<p style='padding: 0 20px;'>".$in."</p>";
- print '</details>';
- print '</div>';
- }
- # Если нужно закончить выполнение скрипта.
- if ($die) die('<hr> [die] End print this Array. 🤔');
- }
- function ppr($in, $opened, $margin = 10, $cycle = 1, $co){
- if(!is_object($in) && !is_array($in)) return;
- foreach($in as $key => $value) {
- if ($cycle > $co) $opened = '';
- # Если это Объект или Массив то
- if(is_object($value) or is_array($value)){
- print '<details style="padding-left:'.$margin.'px; border: 1px solid #f2f2f2" '.$opened.'>';
- print '<summary style="margin: 5px; padding: 5px; background-color: #f1f1f1;">';
- print (is_object($value)) ? $key.' {'.count((array)$value).'}':$key.' ['.count($value).']';
- print '</summary>';
- ppr($value, $opened, $margin+10, $cycle++, $co);
- print '</details>';
- }
- # Если это просто строка с текстом то
- else {
- switch(gettype($value)){
- case 'string':
- $style = 'color: #980000;';
- break;
- case 'integer':
- $style = 'color: #047d3b; font-weight: 600;';
- break;
- }
- print '<div style="background: #fdfdfd; border-bottom: 1px solid #e6e6e6; padding: 2px 2px 2px '.$margin.';">'.$key . ' : <span style="'.$style.'">' . $value .'</span> ('.gettype($value).')</div>';
- }
- }
- }
Add Comment
Please, Sign In to add comment