Il y a quelques temps, j'en avait un peu marre de devoir retaper à chaque fois que je voulais afficher le contenu d'un tableau
<?php echo '<pre>'.print_r($array,true).'</pre>'; ?>
, et avoir en plus un truc bien moche qui m'embêtait pour le parcourir.Donc j'ai codé cette fonction, qui lit le contenu complet d'un tableau et l'affiche, avec des informations en plus (type de la variable, taille du texte pour les strings, nom de la classe pour les objets). J'y ais également mis une petite coloration syntaxique des familles pour faire plus joli (tableaux en orange, chaîne en vert, types de variables en bleu, nombres en rouge, et le reste j'ai oublié
.Pour le lancer, il suffit d'exécuter debug_r($array).
function debug_r($tableau,$return=false,$indent='') {
if(is_array($tableau)) {
$result = '<span style="font-weight: bold; color: #eb9230;">Array {'."\n";
foreach($tableau as $clef=>$var) {
if(is_array($var)) {
$result.= $indent.' <span style="font-weight: normal; color: #f00;">['.$clef.']</span> => '.debug_r($var,true,$indent.' ');
} else {
$stringlength = '';
$type = gettype($var);
if($type==='string') {
$stringlength = '['.strlen($var).']';
$var = '<span style="color: #4a9b2f;">"'.htmlentities($var).'"</span>';
} elseif($type==='object') {
$var = '<span style="color: #936d96;"><b>Class</b> '.get_class($var).'</span>';
} else {
$var = '<span style="color: #936d96;">'.$var.'</span>';
}
$result.= $indent.' <span style="font-weight: normal; color: #f00;">['.$clef.']</span> => <span style="font-weight: normal; color: #6032b4;">'.$type.'('.$var.')'.$stringlength.'</span>,'."\n";
}
}
$result.= $indent.'}</span>'."\n";
if($indent==='') $result = '<pre style="font-family: Consolas;">'.$result.'</pre>';
if($return===true) {
$return = $result;
} else {
$return = print($result);
}
} else {
echo '<br /><b>Attention : </b>La fonction debug_r() doit être lancé avec un argument de type Array (donné: '.gettype($tableau).'; contient: '.$tableau.')';
$return = false;
}
return $return;
}
++!