Guest User

Untitled

a guest
Mar 24th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.27 KB | None | 0 0
  1. <?php
  2. /**
  3. * Выводим красивый массив в виде дерева.
  4. * @param $in Массив который нам нужно вывести
  5. * @param $config Массив настроек не обязателен
  6. */
  7. function pr($in, $config = array()) {
  8. $die = ($config['die'] === 0) ? false : true; // Заканчивать скрипт после вывода?
  9. $btn = ($config['btn'] === 0) ? false : true; // Заканчивать скрипт после вывода?
  10. $title = $config['name'] ? $config['name'] : ""; // Название массива
  11. $co = $config['co'] ? $config['co'] : 2; // Сколько веток будет открыто?
  12. $opened = $config['opened'] ? "" : "open"; // Атрибут для details если нужно раскрыть
  13.  
  14. # Кнопки закрытия и раскрытия всех блоков.
  15. if ($btn) {
  16. print '<span style="position: fixed; top: 5px; right: 5px; padding: 3px; margin: 10px; display: inline-block; background-color: #444; color: #fff; cursor: pointer;"
  17. onclick="Array.from(document.getElementsByTagName(\'details\')).forEach(function(el){el.removeAttribute(\'open\');})">Свернуть все.</span>';
  18. print '<span style="position: fixed; top: 35px; right: 5px; padding: 3px; margin: 10px; display: inline-block; background-color: #444; color: #fff; cursor: pointer;"
  19. onclick="Array.from(document.getElementsByTagName(\'details\')).forEach(function(el){el.setAttribute(\'open\', 1);})">Развернуть все.</span>';
  20. }
  21.  
  22. # Если это Объект или Массив то
  23. if(is_object($in) or is_array($in)) {
  24. print '<div>';
  25. print '<details '.$opened.' style="background-color: #f9f9f9; padding-bottom: 10px; border: 1px solid #f5f5f5">';
  26. print '<summary style="padding: 10px; background-color: #359296; color: #fff; font-weight: 600; margin-bottom: 10px;">';
  27. print (is_object($in)) ? ($title ? $title.': ' : '').'Object {'.count((array)$in).'}' : ($title ? $title.': ' : '').'Array ['.count($in).']';
  28. print '</summary>';
  29. ppr($in, $opened, 10, 1, $co);
  30. print '</details>';
  31. print '</div>';
  32. }
  33.  
  34. # Если это просто строка с текстом то
  35. else {
  36. print '<div>';
  37. print '<details '.$opened.' style="background-color: #f9f9f9; padding-bottom: 10px; border: 1px solid #f5f5f5">';
  38. print '<summary style="padding: 10px; background-color: #359296; color: #fff; font-weight: 600; margin-bottom: 10px;">';
  39. print $title ? $title : "Произвольный текст";
  40. print '</summary>';
  41. print "<p style='padding: 0 20px;'>".$in."</p>";
  42. print '</details>';
  43. print '</div>';
  44. }
  45.  
  46. # Если нужно закончить выполнение скрипта.
  47. if ($die) die('<hr> [die] End print this Array. 🤔');
  48. }
  49. function ppr($in, $opened, $margin = 10, $cycle = 1, $co){
  50. if(!is_object($in) && !is_array($in)) return;
  51.  
  52. foreach($in as $key => $value) {
  53. if ($cycle > $co) $opened = '';
  54.  
  55. # Если это Объект или Массив то
  56. if(is_object($value) or is_array($value)){
  57. print '<details style="padding-left:'.$margin.'px; border: 1px solid #f2f2f2" '.$opened.'>';
  58. print '<summary style="margin: 5px; padding: 5px; background-color: #f1f1f1;">';
  59. print (is_object($value)) ? $key.' {'.count((array)$value).'}':$key.' ['.count($value).']';
  60. print '</summary>';
  61. ppr($value, $opened, $margin+10, $cycle++, $co);
  62. print '</details>';
  63. }
  64.  
  65. # Если это просто строка с текстом то
  66. else {
  67. switch(gettype($value)){
  68. case 'string':
  69. $style = 'color: #980000;';
  70. break;
  71. case 'integer':
  72. $style = 'color: #047d3b; font-weight: 600;';
  73. break;
  74. }
  75. print '<div style="background: #fdfdfd; border-bottom: 1px solid #e6e6e6; padding: 2px 2px 2px '.$margin.';">'.$key . ' : <span style="'.$style.'">' . $value .'</span> ('.gettype($value).')</div>';
  76. }
  77. }
  78. }
Add Comment
Please, Sign In to add comment