2009-09-15 6 views

Répondre

24

Utilisez var_export si vous voulez une représentation qui est également le code PHP valide

$a = array (1, 2, array ("a", "b", "c")); 
$dump=var_export($a, true); 
echo $dump; 

affichera

array (
0 => 1, 
1 => 2, 
2 => 
array (
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
), 
) 

Pour transformer ce retour dans un tableau, vous pouvez utiliser eval, par exemple

eval("\$foo=$dump;"); 
var_dump($foo); 

Je ne sais pas pourquoi vous voulez faire bien. Si vous souhaitez stocker une structure de données PHP quelque part et ensuite la recréer plus tard, consultez serialize() et unserialize() qui sont plus adaptés à cette tâche.

+0

C'est faux. Il ne produit pas de tableau, il fait seulement $ foo une chaîne, qui est égale à $ dump, qui est aussi une chaîne, qui devrait être analysée. –

+2

Ce n'est vraiment pas faux. Essayez-le. http://codepad.viper-7.com/7ATm27 –

+0

Non, cela ne fonctionne pas. Lorsque je prends la chaîne outputtet, commente tes deux premières lignes et mets $ dump à cette chaîne sortie (flashe html ou text), j'obtiens une erreur de syntaxe. Il est donc différent d'utiliser une variable var_export-ed et de n'avoir qu'une chaîne var_dump-ed. – Seika85

1

Vous ne pouvez pas. var_dump sort simplement du texte mais ne renvoie rien.

+0

Qu'en est-il de celui ayant une chaîne de var_dump via Goold ancienne copie de pâte? (Je connais des gens qui copient coller d'énormes var_dumps dans des fichiers texte et m'envoient ces fichiers texte.) – Seika85

+0

@ Seika85: Vous pouvez leur dire d'utiliser la bufferisation de sortie pour obtenir le résultat sous forme de chaîne. Mais pour les besoins de cette question, c'est toujours un «non» car ils ont demandé comment obtenir un tableau. – Joey

1

Peut-être que vous cherchez var_export qui vous donnera une expression PHP valide de la valeur transmise.

+1

vient d'éditer votre réponse en pensant qu'elle était à moi! Pardon! –

1

Peut-être que vous essayez de convertir un objet en tableau?

1

var_export crée le code PHP, que vous pouvez exécuter via le eval.

Mais je me demande, quelle est votre idée?

1

J'ai eu un problème similaire: un script à long terme produit à la fin un vardump de grand tableau. J'ai dû l'analyser en quelque sorte pour d'autres analyses. Ma solution était comme ceci:

cat log.stats | 
    sed 's/\[//g' | 
    sed 's/\]//g' | 
    sed -r 's/int\(([0-9]+)\)/\1,/g' | 
    sed 's/\}/\),/g' | 
    sed -r 's/array\([0-9]+\) \{/array(/g' > 
    log.stats.php 
+0

bonne réponse, le seul problème est si vous avez des valeurs contiennent des chaînes ... donc ils ne sont pas enveloppés par '' – WonderLand

+0

Certainement c'était juste un hack rapide qui a fonctionné pour mon scénario spécifique. En général, var_dump est horrible à analyser, donc chaque fois que possible, j'utilise autre chose (principalement json_encode). Vous avez raison, les cordes causeraient des problèmes. D'énormes problèmes si contiennent des barres obliques ou des citations. Modéré si contient quelque chose qui lui-même ressemble à une sortie de vidage var (=>, [8] ou int (12)) :) – qbolec

Questions connexes