2010-04-16 6 views
5

Je me demandais s'il y avait un moyen d'imprimer uniquement la structure du tableau sans le contenu. J'utilise généralement print_r pour examiner la structure, mais comme mon tableau contient des données binaires, je préfère ne pas l'utiliser.Impression de la structure d'un tableau sans son contenu?

+0

écrire votre propre fonction récursive émule print_r? –

Répondre

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"; 
     } 
    } 
?> 

* n'a pas testé cela, mais devrait vous aider à démarrer.

+0

Ajoutez un second paramètre appelé '$ count = 0' à votre fonction et appelez la fonction comme' print_no_contents ($ v, ++ $ count); 'Et faites quelque chose comme' strrepeat ('', $ count) 'juste devant de la partie 'echo $ k. '=>' 'afin d'obtenir un bon retrait :) – Jelmer

1

on ne pouvait pas faire juste

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

Cela fonctionne comme un démarreur, une bonne réponse, mais il ne ferait que le plus haut niveau du tableau. Vous auriez besoin de faire quelque chose comme ceci pour obtenir la structure complète: 'fonction output_array_structure ($ array, $ type =" ") { echo"

    "; foreach ($ array sous $ structure => $ data) { echo "
  1. $ structure
  2. "; Si (is_array ($ data)) { output_array_structure } } echo "
"; } ' – sijpkes

1

J'aime utiliser xdebug's var_dump() overload pour toute ma Espionne variable. Vous pouvez lui fournir un paramètre ini pour tronquer les valeurs qui sont exportées, et il fournit des limites saines pour commencer (bien que je ne sois pas sûr de ce qu'il fait typiquement avec les données binaires).

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

Vous pouvez le télécharger à partir http://xdebug.org/

1

ici est une structure de tableau avec des données

 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>"; 
     } 
Questions connexes