Je travaille sur un site drupal) et lors du débogage, je dois toujours lire de longs tableaux imbriqués. En conséquence, une grande partie de ma vie est consacrée à l'utilisation de la flèche, retour , et les touches de tabulation, pour diviser plus de 1000 chaînes de caractères en un format imbriqué et lisible.
Pour drupal devs, je ne peux pas utiliser dsm () de dvel (), car je travaille avec des formulaires # ahah/# ajax à plusieurs étapes, et je ne peux que générer les tableaux dans le journal des erreurs. , pas à l'écran.
Exemple visuel:
Mal:
array ('form_wrapper' => array ('#tree' => true, '#type' => 'fieldset', '#prefix' => '', '#suffix' => ',' #value '= > '', 'name' => array ('#type' => 'textfield', '#title' => NULL, '#size' => 60, '#maxlength' => 60, '#required' = > false, '#description' => NULL, '#attributes' => array ('placeholder' => 'Email',), '#post' => array ('form_wrapper' => array ('name' => '', 'pass' => '',),
Bien:
array (
'form_wrapper' => array (
'#tree' => true,
'#type' => 'fieldset',
'#prefix' => '<div>',
'#suffix' => '</div>',
'#value' => '',
'name' => array (
'#type' => 'textfield',
'#title' => NULL,
'#size' => 60,
'#maxlength' => 60,
'#required' => false,
'#description' => NULL,
'#attributes' => array (
'placeholder' => 'Email',
),
Edit: Désolé, par "pas de sortie à l'écran", je voulais dire via les messages système de drupal où il est possible de sortir des tableaux dans un format cliquable et imbriqué (en utilisant devel.module).
Si vous devez enregistrer une erreur dans le journal des erreurs Apache, vous pouvez essayer ceci:
error_log( print_r($multidimensionalarray, TRUE) );
http://php.net/manual/en/function.print-r.php Cette fonction peut être utilisée pour formater la sortie,
$output = print_r($array,1);
$output
Est une variable de chaîne, elle peut être enregistrée comme toute autre chaîne. En php pur, vous pouvez utiliser trigger_error
Ex. trigger_error($output);
http://php.net/manual/en/function.trigger-error.php
si vous devez aussi le formater en HTML, vous pouvez utiliser la balise <pre>
En utilisant print_r
, var_dump
ou var_export
devrait le faire assez bien si vous regardez le résultat en mode d'affichage source, pas en mode HTML, ou comme @Joel Larson l'a dit, si vous mettez tout dans un <pre>
tag.
print_r
est préférable pour la lisibilité, mais n'imprime pas les valeurs null/false.
var_dump
est préférable pour vérifier les types de valeurs et de longueurs et les valeurs null/false.
var_export
est semblable à var_dump
mais il peut être utilisé pour obtenir la chaîne déchargée.
Le format renvoyé par l’un de ceux-ci est correctement mis en retrait dans le code source et var_export
peut être utilisé pour la journalisation, car il peut être utilisé pour renvoyer la chaîne vidée.
Utilisez le plug-in xdebug pour PHP ceci affiche var_dump
s en tant que chaînes HTML formatées et non en tant que format de vidage brut, vous permet également de fournir une fonction personnalisée que vous souhaitez utiliser pour le formatage.
Drupal module Devel possède d'autres fonctions utiles, notamment des fonctions permettant d'imprimer des tableaux et des objets formatés dans des fichiers journaux. Voir le guide sur http://ratatosk.net/drupal/tutorials/debugging-drupal.html
dd ()
Enregistre toute variable dans un fichier nommé "drupal_debug.txt" dans le répertoire temporaire du site. Toutes les sorties de cette fonction sont ajoutées au fichier journal, ce qui permet de voir facilement comment le contenu d'une variable change lorsque vous modifiez votre code.
Si vous utilisez Mac OS X, vous pouvez utiliser la console de journalisation pour surveiller le contenu du fichier journal.
Si vous utilisez une variante de Linux, vous pouvez utiliser la commande "tail -f drupal_debug.txt" pour voir les données enregistrées dans le fichier.
Cela vous aidera
echo '<pre>';
$output = print_r($array,1);
echo '</pre>';
EDIT
utiliser echo '<pre>';
est inutile, mais var_export($var);
fera ce que vous attendez.
Vous devriez pouvoir utiliser var_dump () dans une balise pré. Sinon, vous pourriez envisager d'utiliser une bibliothèque comme dump_r.php: https://github.com/leeoniya/dump_r.php
Ma solution est incorrecte. OP recherchait une solution formatée avec des espaces à stocker dans un fichier journal.
Une solution pourrait être d'utiliser la mise en mémoire tampon de sortie avec var_dump, puis str_replace () tous les onglets avec des espaces pour le formater dans le fichier journal.