8768 sujets

Développement web côté serveur, CMS

Bonjour à vous tous,

Je continue mon initiation du PHP et je sais que l'utilisation des instructions print_r et var_dump affichent les valeurs de variables enregistrées dans la RAM mais je me demande s'il y a une différence fondamentale entre elles ? Pourquoi utiliser untel plutôt que l'autre ?
Bonjour,

print_r() affiche les variables mais pas leur type.

var_dump() affiche les variables avec leur type.

Bon aussi à connaître:
var_export() affiche le code PHP valide, que tu peux par exemple réutiliser par la suite.

Autre point important: si tu utiliser l'extension PHP xdebug (ce que je te conseille), seul var_dump() affichera un code proprement formatté.


<?php
$test_array = [
    'exemple',
    true,
    [
        'tableau' => 'valeur'
    ]
];

print_r($test_array);

var_dump($test_array);

var_export($test_array);

// print_r output:
Array ( [0] => exemple [1] => 1 [2] => Array ( [tableau] => valeur ) )Array ( [0] => exemple [1] => 1 [2] => Array ( [tableau] => valeur ) )

// var_dump output:
array (size=3)
  0 => string 'exemple' (length=7)
  1 => boolean true
  2 => 
    array (size=1)
      'tableau' => string 'valeur' (length=6)

// var_export output:
array ( 0 => 'exemple', 1 => true, 2 => array ( 'tableau' => 'valeur', ), )
Merci Migli pour tes explications claires du début mais je suis débutant. Je n'ai commencé mon initiation du PHP qu'il y a deux semaines. Tu me proposes du code qui est du chinois total pour moi.
Modifié par ObiJuanKenobi (12 Apr 2022 - 08:06)
Le code de Migli te montre la différence entre les trois utilisation donc on parle ici :

print_r($test_array);

var_dump($test_array);

var_export($test_array);


et pour chaque on a un affichage diffèrent
il a mit un commentaire à chaque fois au dessus de la ligne montrant le "résultat"
// print_r output:
// var_dump output:
// var_export output:

Ce n'est pas de code "PHP" mais ça correspond à ce que ton navigateur va t'afficher pour chaque fonctions nommés
C'est un code d'illustration des différences de résultat entre chaque fonction.
Il crée un tableau pour servir d'exemple puis il affiche la sortie que l'on obtient pour chaque fonction lorsqu'elle est utilisé sur le tableau d'exemple.

Personnellement j'ai tendance à préférer var_dump que je trouve plus lisible.
Mais dans certains contextes où j'utilise la fonction error_log, je la combine avec var_export ou print_r car avec var_dump par défaut le résultat est lamentable et il faut rajouté d'autres trucs (ob_start puis d'autres trucs que je ne me souviens jamais ..)
Mathieuu si tu parles du résultat du var_dump en lecture, tu peux combiner avec <pre></pre> et des echo avant après

echo "<pre>";
var_dump();
echo "</pre>";
die;


j'ai dans phpstorm rajouté un raccourci quand j'écris dump + ctrl + espace ça me formate les 4 lignes. pratique
Je fais souvent comme ça c'est pour ça que je préfère var_dump en général Smiley good

Mais non la je parle de manière spécifique avec la fonction error_log pour faire de la sortie en fichier de log plutôt que directement sur la page.

En gros le résultat de error_log(var_dump($toto)); est illisible, ce qui n'est pas le cas avec print_r et var_export. De mémoire :
error_log(print_r($toto)) fonctionne directement
error_log(var_export($toto,1)) il faut penser à rajouter le ,1 en 2e paramètre de var_export pour que cela fonctionne