web-dev-qa-db-fra.com

Faire des valeurs PHP var_dump () afficher une ligne par valeur

Quand j'écho var_dump ($ _ variable), j'obtiens une longue ligne d'habillage avec toutes les variables et valeurs comme

["kt_login_user"]=>  string(8) "teacher1" ["kt_login_id"]=>  string(3) "973" ["kt_campusID"]=>  string(4) "9088" ["kt_positionID"]=>  string(1) "5" 

Est-il possible de faire en sorte que chaque valeur soit affichée sur sa propre ligne pour faciliter la lecture? Quelque chose comme ça:

["kt_login_user"]=>  string(8) "teacher1" 
["kt_login_id"]=>  string(3) "973" 
["kt_campusID"]=>  string(4) "9088" 
["kt_positionID"]=>  string(1) "5"
60
user1320318

Oui, essayez de l'envelopper avec <pre>, par exemple.:

echo '<pre>' , var_dump($variable) , '</pre>';
83
phirschybar

J'ai généralement une fonction Nice pour gérer la sortie d'un tableau, juste pour la remonter un peu lors du débogage.

function pr($data)
{
    echo "<pre>";
    print_r($data); // or var_dump($data);
    echo "</pre>";
}

Alors appelez ça

pr($array);

Ou si vous avez un éditeur comme celui-ci, vous enregistrez les extraits afin que vous puissiez y accéder plus rapidement au lieu de créer une fonction pour chaque projet que vous construisez ou chaque page nécessitant simplement un test rapide.

Pour print_r:

echo "<pre>", print_r($data, 1), "</pre>";

Pour var_dump():

echo "<pre>", var_dump($data), "</pre>";

J'utilise ce qui précède avec PHP Storm. Je l'ai défini comme commande pr tab.

34
Dave

J'ai également fait des recherches sur ce problème et je n'ai pas trouvé la bonne réponse. Cela ne marche pas pour moi:

echo '<pre>' . var_dump($variable) . '</pre>';

Cela ne me fournira pas un affichage agréable du tableau, avec des sauts de ligne (j'utilise Firefox 31.3.0)

Cependant, après quelques expérimentations, le problème a été résolu (notez que le php est fermé au début):

... ?> <pre><?php echo var_dump($variable) ?></pre> <?php ...

Cela résout le problème et affiche un tableau agréable et facile à lire pour moi sur mon navigateur. Vous voyez comment les balises ne sont pas enveloppées dans PHP; seule la partie echo var_dump est.

14
Mark

Si vous avez installé XDebug , vous pouvez utiliser c'est var_dump remplacement. Citant:

Xdebug remplace la fonction var_dump () de PHP pour l'affichage des variables. La version de Xdebug inclut différentes couleurs pour différents types et limite la quantité d'éléments de tableau/propriétés d'objet, la profondeur maximale et la longueur des chaînes. Quelques autres fonctions traitent également de l'affichage des variables.

Vous voudrez probablement modifier quelques-uns des paramètres suivants:

Un certain nombre de paramètres contrôlent la sortie de la fonction modifiée var_dump () de Xdebug: xdebug.var_display_max_children, xdebug.var_display_max_data et xdebug.var_display_max_depth. L'effet de ces trois paramètres est mieux illustré par un exemple. Le script ci-dessous est exécuté quatre fois, à chaque fois avec des paramètres différents. Vous pouvez utiliser les onglets pour voir la différence.

Mais gardez à l'esprit que XDebug ralentira considérablement votre code, même s'il vient d'être chargé. Il n'est pas conseillé de s'exécuter sur des serveurs de production. Mais bon, vous n'êtes pas var_dumping sur les serveurs de production de toute façon, n'est-ce pas?

12
dm03514

var_export vous donnera une sortie Nice. Exemples tirés de la documentation:

$a = array (1, 2, array ("a", "b", "c"));
echo '<pre>' . var_export($a, true) . '</pre>';

Est-ce que la sortie:

array (
  0 => 1,
  1 => 2,
  2 => 
  array (
    0 => 'a',
    1 => 'b',
    2 => 'c',
  ),
)
11
Tieme

Pour moi, la bonne réponse était

echo '<pre>' . var_export($var, true) . '</pre>';

Puisque var_dump($var) et var_export($var) ne renvoient pas de chaîne, vous devez utiliser var_export($var, true) pour forcer var_export À renvoyer le résultat sous forme de valeur.

10

Vous pouvez appuyer sur Ctrl+U pour voir le code source. La plupart des navigateurs vont embellir la sortie là-bas.

var_dump est le moyen le plus laid de déboguer.

7
Stephan Weinhold

Utiliser les tampons de sortie: http://php.net/manual/de/function.ob-start.php

<?php
    ob_start();
    var_dump($_SERVER) ;
    $dump = ob_get_contents();
    ob_end_clean();

    echo "<pre> $dump </pre>";
?>

Une autre option consisterait à utiliser la mise en mémoire tampon de sortie et à convertir toutes les nouvelles lignes du dump en <br> éléments, par exemple.

ob_start();
var_dump($_SERVER) ;
echo nl2br(ob_get_clean());
6
Aroddo

Pour les développeurs ayant besoin de quelque chose qui fonctionne dans le voir la source et le CLI , particulièrement utile lors du débogage des tests unitaires.

echo vd([['foo'=>1, 'bar'=>2]]);

function vd($in) {
  ob_start(); 
  var_dump($in);
  return "\n" . preg_replace("/=>[\r\n\s]+/", "=> ", ob_get_clean());
}

Rendements:

array(1) {
  [0] => array(2) {
    'foo' => int(1)
    'bar' => int(2)
  }
}
1
Ricky Boyce

J'aime vraiment var_export (). Si vous aimez copier/coller du code, essayez:

echo '<pre>' . var_export($data, true) . '</pre>';

Ou même quelque chose comme ceci pour la coloration syntaxique des couleurs:

highlight_string("<?php\n\$data =\n" . var_export($data, true) . ";\n?>");
1
Roshimon

Je ne voulais pas cesser d'utiliser var_dump($variable);die(); et d'utiliser pre balises et boucles me paraissait excessif. Aussi, comme je regarde le cliché dans un navigateur, je clique avec le bouton droit de la souris sur la page et je choisis Inspecter (j'utilise Chrome). La section Éléments des outils de développement affiche la variable dans un format très lisible.

0
Lucio Mollinedo

J'ai fait une solution similaire. J'ai créé un extrait de code pour remplacer 'vardump' par ceci:

foreach ($variable as $key => $reg) {
    echo "<pre>{$key} => '{$reg}'</pre>";
}
var_dump($variable);die;

Ps: je répète les données avec le dernier var_dump pour obtenir le nom de fichier et la ligne

Donc ça: enter image description here Est devenu ceci: enter image description here

Faites-moi savoir si cela vous aidera.

0
Edilson Borges

Personnellement, j'aime bien la fonction de remplacement fournie par composant var dumper de Symfony

Installez avec composer require symfony/var-dumper Et utilisez simplement dump($var)

Il s'occupe du reste. Je crois qu’un peu de JS a également été injecté pour vous permettre d’interagir un peu avec la sortie.

0
apokryfos

Enveloppez-le dans <pre> balises pour préserver la mise en forme.

0
SenorAmor