Le principe est simple, enregistrer dans un fichier texte une variable de type array pour ne plus la perdre.
Peut être que comme moi, un jour vous vous êtes demandé comment mémorisé l'état exact d'une page de manière permanente ?
Créer des sessions persistantes ?
Et bien cette fonction peut vous y aider…
function Array2File($arr,$sFileOut,$file='',$where='') { if (!is_array($arr)) return false; if ($file!='') $f=$file; else { if (!($f = fopen($sFileOut, "wa+"))) return false; } foreach ($arr as $k => $v) { if ((gettype($v)=='string') || (gettype($v)=='entier') || (gettype($v)=='boolean') || (gettype($v)=='double') || (gettype($v)=='unknown type')) { if (!fwrite($f, $where.$k.'='.urlencode(gzcompress($v,9))."\n")) return false; } else if (gettype($v)=='array') Array2File($v,$sFileOut,$f,$k."']['"); } if ($file=='') fclose($f); } function File2Array($sFileIn) { $arr=file($sFileIn); $ret=array(); foreach ($arr as $v) { $v=explode('=', $v, 2); eval('$ret[\''.$v[0].'\']=gzuncompress(urldecode("'.str_replace("\n",'',$v[1]).'"));'); } return $ret; } //exemple : Array2File($_SESSION,'test.txt'); echo '<pre>'; print_r(File2Array('test.txt')); echo '</pre>';
Ce code se compose de 2 fonctions :
L'exemple ci-dessous va stocker toutes les variables sessions dans le fichier test.txt puis les restaurer (a partir du fichier) dans la variable $ret :
Array2File($_SESSION,'test.txt'); $ret=File2Array('test.txt'); echo '<pre>'; print_r($ret); echo '</pre>';
— iDo 01/02/2006 17:48
Discussion
Super fonctions, merci ! Mais je crois qu'il y a un bug dans Array2File.
Array2File($v,$sFileOut,$f,$where.$k.”']['”); au lieu de : Array2File($v,$sFileOut,$f,$k.”']['”);
Sinon il y a un souci dès qu'on entre dans le second niveau de la récursivité.
Stéf