194 votes

Imprimer le tableau dans un fichier

Je voudrais imprimer un tableau dans un fichier.

J'aimerais que le fichier ressemble exactement à ce à quoi ressemble un code comme celui-ci.

print_r ($abc); en supposant que $abc est un tableau.

Existe-t-il une solution unique pour cela, plutôt qu'une solution régulière pour chaque look ?

P.S - J'utilise actuellement serialize mais je veux rendre les fichiers lisibles car la lisibilité est assez difficile avec les tableaux sérialisés.

335voto

Gordon Points 156415

O bien var_export ou mettre print_r pour retourner la sortie au lieu de l'imprimer.

Exemple tiré du manuel PHP

$b = array (
    'm' => 'monkey', 
    'foo' => 'bar', 
    'x' => array ('x', 'y', 'z'));

$results = print_r($b, true); // $results now contains output from print_r

Vous pouvez alors sauvegarder $results con file_put_contents . Ou le renvoyer directement lors de l'écriture dans le fichier :

file_put_contents('filename.txt', print_r($b, true));

0 votes

Comment pouvez-vous enregistrer UNIQUEMENT le contenu du tableau et non le tableau entier "[0] => blah" ?

15 votes

@user1899415 implode le tableau avec PHP_EOL et écrire la chaîne résultante dans le fichier.

15 votes

var_export est préférable si vous souhaitez enregistrer le fichier en syntaxe php. print_r renvoie à [m] => monkey mais var_export renvoie à 'm' => 'monkey'

56voto

Felix Kling Points 247451

Il suffit d'utiliser print_r ; ) Lire la documentation :

Si vous souhaitez capturer la sortie de print_r() utilisez le return paramètre. Lorsque ce paramètre est réglé sur TRUE , print_r() renverra l'information plutôt que de l'imprimer.

C'est donc une possibilité :

$fp = fopen('file.txt', 'w');
fwrite($fp, print_r($array, TRUE));
fclose($fp);

27voto

binaryLV Points 5380

file_put_contents($file, print_r($array, true), FILE_APPEND)

26voto

Sarfraz Points 168484

Vous pouvez essayer :

$h = fopen('filename.txt', 'r+');
fwrite($h, var_export($your_array, true));

1 votes

Ajoutez le deuxième paramètre de true à var_export, sinon il n'y a pas de contenu à écrire dans le fichier.

0 votes

Var_export était une meilleure solution selon mon expérience, car elle met la variable tableau entre guillemets, ce qui permet une meilleure gestion lors de l'utilisation de include/require pour accéder aux valeurs du tableau.

7voto

Ahmad Points 1308

Vous pouvez essayer ceci, $myArray comme le tableau

$filename = "mylog.txt";
$text = "";
foreach($myArray as $key => $value)
{
    $text .= $key." : ".$value."\n";
}
$fh = fopen($filename, "w") or die("Could not open log file.");
fwrite($fh, $text) or die("Could not write file!");
fclose($fh);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X