2010-04-16 3 views
5

Мне было интересно, есть ли способ распечатать только структуру массива без содержимого. Обычно я использую print_r для проверки структуры, но поскольку мой массив содержит некоторые двоичные данные, я бы предпочел не использовать это.Печать структуры массива без его содержимого?

+0

написать свою собственную рекурсивную функцию эмуляции print_r? –

ответ

12
<?php 
    function print_no_contents($arr) { 
     foreach ($arr as $k=>$v) { 
      echo $k."=> "; 
      if (is_array($v)) { 
       echo "\n"; 
       print_no_contents($v); 
      } 
      else echo "[data]"; 
      echo "\n"; 
     } 
    } 
?> 

* не проверял это, но должен вас начать.

+0

Добавьте второй параметр '$ count = 0' в свою функцию и вызовите функцию как' print_no_contents ($ v, ++ $ count); 'И сделайте что-то вроде' strrepeat ('', $ count) 'прямо перед из 'echo $ k. '=>'' часть, чтобы получить хороший отступ :) – Jelmer

1

не мог просто сделать

foreach ($array as $structure=>$data){ 
    echo $structure."=><br />"; 
} 
+0

Это работает как стартер, хороший ответ, но он будет делать только верхний уровень массива. Вам нужно будет сделать что-то подобное, чтобы получить полную структуру: 'function output_array_structure ($ array, $ type =" ") { echo"

    "; foreach ($ array as $ structure => $ data) { echo "
  1. $ structure
  2. "; if (is_array ($ data)) { output_array_structure ($ data, "type = 'a'"); } } echo "
"; } ' – sijpkes

1

Мне нравится использовать xdebug's var_dump() overload для всей моей переменной Snooping. Вы можете предоставить его с настройкой ini, чтобы усечь значения, которые выгружены, и с самого начала предоставляет некоторые разумные ограничения (хотя я не уверен, что он обычно делает с двоичными данными).

ini_set('xdebug.var_display_max_data', 0); 
var_dump($your_variable);

Вы можете скачать его с http://xdebug.org/

1

здесь структура массива с данными

 echo printArray($your_array); 

     function printArray($a,$return=true) { 
        if(!$return) 
         echo "<pre style=\"font-size:12px;\">".print_r($a,true)."</pre>"; 
        else 
         return "<pre style=\"font-size:12px;\">".print_r($a,true)."</pre>"; 
     } 
Смежные вопросы