Table des matières
Niveau
..........
En rapport...
Cette fonction reste a titre informatif, en effet PHP peut faire la même opération en natif avec les fonctions serialize et unserialize

Introduction

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…

Code

php
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>';

Utilisation

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 :

php
Array2File($_SESSION,'test.txt');
$ret=File2Array('test.txt');
echo '<pre>';
print_r($ret);
echo '</pre>';
L'enregistrement mémorise les tableau de tableau (et même plus) mais ne peut en aucun cas mémoriser des objets ou des pointeurs.

iDo 01/02/2006 17:48