PHP Sortie d'une vue structurée de tableaux et d'objets


Exemple

print_r() - Sortie de tableaux et d' objets pour le débogage

print_r affichera un format lisible par l'homme d'un tableau ou d'un objet.

Vous pouvez avoir une variable qui est un tableau ou un objet. Essayer de le sortir avec un echo lancera l'erreur:
Notice: Array to string conversion . Vous pouvez plutôt utiliser la fonction print_r pour vider un format lisible par l'homme de cette variable.

Vous pouvez transmettre true comme second paramètre pour renvoyer le contenu sous forme de chaîne.

$myobject = new stdClass();
$myobject->myvalue = 'Hello World';
$myarray = [ "Hello", "World" ];
$mystring = "Hello World";
$myint = 42;

// Using print_r we can view the data the array holds.
print_r($myobject);
print_r($myarray);
print_r($mystring);
print_r($myint);

Cela génère les éléments suivants:

stdClass Object
(
    [myvalue] => Hello World
)
Array
(
    [0] => Hello
    [1] => World
)
Hello World
42

De plus, la sortie de print_r peut être capturée sous forme de chaîne, plutôt que simplement renvoyée. Par exemple, le code suivant $myarray version formatée de $myarray dans une nouvelle variable:

$formatted_array = print_r($myarray, true);

Notez que si vous visualisez la sortie de PHP dans un navigateur, et que celle-ci est interprétée en HTML, les sauts de ligne ne seront pas affichés et la sortie sera beaucoup moins lisible à moins que vous ne fassiez quelque chose comme:

echo '<pre>' . print_r($myarray, true) . '</pre>';

L'ouverture du code source d'une page formatera également votre variable de la même manière sans utiliser la <pre> .

Sinon, vous pouvez dire au navigateur que ce que vous produisez est du texte brut, et non du HTML:

header('Content-Type: text/plain; charset=utf-8');
print_r($myarray);

var_dump() - var_dump() des informations de débogage lisibles par l'homme sur le contenu des arguments, y compris son type et sa valeur

La sortie est plus détaillée par rapport à print_r car elle print_r également le type de la variable avec sa valeur et d'autres informations telles que les ID d'objet, les tailles de tableau, les longueurs de chaîne, les marqueurs de référence, etc.

Vous pouvez utiliser var_dump pour générer une version plus détaillée du débogage.

var_dump($myobject, $myarray, $mystring, $myint);

La sortie est plus détaillée:

object(stdClass)#12 (1) {
  ["myvalue"]=>
  string(11) "Hello World"
}
array(2) {
  [0]=>
  string(5) "Hello"
  [1]=>
  string(5) "World"
}
string(11) "Hello World"
int(42)

Remarque : Si vous utilisez xDebug dans votre environnement de développement, la sortie de var_dump est limitée / tronquée par défaut. Voir la documentation officielle pour plus d'informations sur les options pour changer cela.


var_export() - var_export() un code PHP valide

var_export() une représentation var_export() PHP de l'élément.

Vous pouvez transmettre true comme second paramètre pour renvoyer le contenu dans une variable.

var_export($myarray);
var_export($mystring);
var_export($myint);

La sortie est un code PHP valide:

array (
  0 => 'Hello',
  1 => 'World',
)
'Hello World'
42

Pour mettre le contenu dans une variable, vous pouvez le faire:

$array_export = var_export($myarray, true);
$string_export = var_export($mystring, true);
$int_export = var_export($myint, 1); // any `Truthy` value

Après cela, vous pouvez le sortir comme ceci:

printf('$myarray = %s; %s', $array_export, PHP_EOL);
printf('$mystring = %s; %s', $string_export, PHP_EOL);
printf('$myint = %s; %s', $int_export, PHP_EOL);

Cela produira la sortie suivante:

$myarray = array (
  0 => 'Hello',
  1 => 'World',
);
$mystring = 'Hello World';
$myint = 42;