Forum Programmation.php Lisibilité d'un print_r()

Posté par (page perso) .
Tags : aucun
0
16
oct.
2008
Bonjour,

La fonction print_r() c'est pratique, mais c'est parfois illisible.

Je fais un print_r($data), sauf que $data c'est un tableau de tableau de tableau de ........ tableau.

Bref mon print_r fais plusieurs milliers de ligne et c'est impossible malgrès l'indentation de savoir exactement ou l'on se trouve dans l'arborescence de ma variable.

D'ou ma question :

Connaissez vous un moyen, une astuce ou autre trick qui permettrais de dumper des variables sous formes d'arborescence dépliante?? (un truc dépliable telle les pagex xml sans mise en forme serait pas mal)

D'avance merci
  • # \n

    Posté par . Évalué à 0.

    Je dis ça comme ça hein... mais "\n" à la fin de chaque case du tableau est une solution.

    Bon après... c'est clair que j'ai fait mon bourrin là. :-/
  • # ma solution

    Posté par (page perso) . Évalué à 4.

    echo "<pre>";
    print_r($data);
    echo "</pre>";
    • [^] # Re: ma solution

      Posté par (page perso) . Évalué à 3.

      Une solution encore plus propre :
      urpmi php-xdebug
      service httpd restart

      Puis dans ton code utilise du :
      var_dump($variable);

      Ça va te générer les balises pre et la coloration ainsi que te découper partiellement les très gros tableaux.
  • # utiliser un éditeur de code

    Posté par . Évalué à 2.

    salut,

    voilà ce que je te propose :

    exemple de code

    <?php

    for ($i=1; $i<5; $i++)
    {
    $tab1[] = $i;
    }

    for ($j=0; $j<3; $j++)
    {
    $tab2[] = $tab1;
    }

    for ($k=0; $k<2; $k++)
    {
    $tab3[] = $tab2;
    }

    echo "";
    print_r($tab3);
    echo "";

    ?>


    Ce qui en sortie, donne ça (sauf que c'est indenté) :
    Array
    (
    [0] => Array
    (
    [0] => Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    )

    [1] => Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    )

    [2] => Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    )

    )

    [1] => Array
    (
    [0] => Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    )

    [1] => Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    )

    [2] => Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    )

    )

    )


    Tu fais un copier-coller de ton résultat vers ton éditeur de code favori, et tu lances le remplacement automatique de tous les ( par { et de ) par }, tu rajoutes <?php et ?>, tu enregistes, et hop, magique, tu peux enrouler et dérouler tes blocs de code :)
  • # SPL

    Posté par . Évalué à 1.

    Dans la 5.3 il y a RecursiveTreeIterator[1]:


    <?php
    /* tableau */
    $a = new RecursiveArrayIterator(array(
            'foo' => array(
                    'd','e','f',
                    'bar' => array(
                            'g','h'
                    )
            ),
            'baz' => array('a','b','c'),
    ));


    /* print_r() amélioré */
    $it = new RecursiveTreeIterator($a, RecursiveTreeIterator::BYPASS_CURRENT);
    foreach($it as $key => $value) {
            echo "$key $value\n";
    }
    ?>


    Qui peut donner quelque chose comme ça, avec les "décorations" par défaut:


    |-foo Array
    | |-0 d
    | |-1 e
    | |-2 f
    | \-bar Array
    |   |-0 g
    |   \-1 h
    \-baz Array
      |-0 a
      |-1 b
      \-2 c


    [1] http://www.php.net/~helly/php/ext/spl/classRecursiveTreeIter(...)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.