2009-06-27 3 views
11

J'utilise file_put_contents($file, $data); fonction pour mettre le contenu dans le fichier, parce que ces fichiers sont créés à la volée avec le nom des sessions, $ données est un tableau multidimensionnel, quand je fais écho tableau qu'il imprime mais bien dans le fichier, aucun contenu sera enregistré, sauf le mot tableaufichier mettre contenu avec tableau

que dois-je faire ou est-il une autre fonction qui crée automatiquement le fichier et enregistre les données (tableau)?

Merci.

Répondre

22

Vous voulez serialize() le tableau sur writting, et unserialize() après la lecture du fichier.

$array = array('foo' => 'bar'); 
file_put_contents('foo.txt', serialize($array)); 
$array = unserialize(file_get_contents('foo.txt'))); 

Oh, et je ne pas maintenant comment vous echo'd votre tableau, mais echo array('foo' => 'bar'); imprimera toujours Array.

+0

je suis désolé pour utiliser le bon terme, mais j'utilise print_r pour afficher mon tableau – Shishant

+0

juste une note, votre manque a) sur la 2ème ligne – Uberfuzzy

+0

thx! il fixe. :-) –

1

Vous pouvez serialize le tableau, puis l'userialize après le chargement du fichier. Vous pouvez également encoder le tableau en tant qu'objet JSON avec json_encode et écrire dans un fichier .json.

4

Si vous voulez qu'il soit lisible, vous pouvez faire:

<?php 
ob_start(); 
print_r($data); 
$textualRepresentation = ob_get_contents(); 
ob_end_clean(); 

file_put_contents($file, $textualRepresentation); 
?> 
+4

$ textualRepresentation = print_r ($ data, true); serait tout simplement pas bien :-) –

+0

... Haha ne savait pas. Merci :) –

0

Vous pouvez configurer une fonction récursive qui peut traverser chaque membre d'un tableau, vérifier si elle est elle-même un tableau, et si appeler à nouveau la fonction de ce membre, et si non seulement imprimer son contenu. Comme ceci:

function file_put_contents_deep($file, $data) { 
    if (is_array($data) { 
    foreach ($data as $item) { 
     if (is_array($item) { 
     file_put_contents_deep($file, $item); 
     else { 
     file_put_contents($file, $item); 
     } 
    } 
    } else { 
    file_put_contents($file, $data); 
    } 
} 
1

definetelly vous pouvez utiliser la fonction var_export: Comme les meilleurs états de réponse

$contents = var_export($array, true); 

file_put_contents('foo.txt', "<?php\n return {$contents};\n ?>"); 
// and then use something like this to get it: 
$new_array = require('foo.txt'); 
0

, utilise serialize est une bonne option. Cependant, vous pouvez également enregistrer le tableau en utilisant PHP_EOL après chaque élément du tableau et utilisez la commande file pour récupérer le tableau.

function file_put_array($path, $contents) 
{ 
    if (is_array($contents)) 
    { 
     foreach ($contents as $item) 
      $str .= $item.PHP_EOL; 
     file_put_contents($path, $str); 
     return true; 
    } 
    return false; 
} 

Et pour récupérer le contenu:

$contents = file($path, FILE_IGNORE_NEW_LINES); 
Questions connexes