Vendredi 22 Novembre 2013
C'est très con, mais j'avais besoin de générer un tableau PHP en PHP pour le stocker et pouvoir l'utiliser plus tard. J'aurais pu passer par du XML ou du JSON, mais quitte à lire du code dans un fichier autant faire un include()
en PHP, comme ça il n'y a aucun traitement à faire par la suite.
CODE :
Le tableau est indenté pour être plus facile à lire.
Voilà le code pour générer le tableau sous forme de chaîne comme ci-dessus. C'est sans limites de niveaux. Ça merdera certainement s'il y a des objets :
CODE :
/** retour à la ligne */
define('N', "\n");
/** tabulation */
define('T', "\t");
/**
* retourne un tableau multidimensionnel sous forme « texte PHP » et en arbre
* @param string $nom Nom du tableau : $nom = array();
* @param array $tab Tableau à sérialiser en code PHP.
* @return string le tableau sous forme de texte PHP ${nom} = array(...);
*/
function array_tostring($nom, array $tab) {
if (is_array($tab)) {
return "\${$nom} = array (".N
. array_tostring_a_parse($tab)
. N.");";
} else {
return false;
}
}
function array_tostring_parse(array $tab, $n = 1) {
if (is_array($tab)) {
$lv = array();
$space = str_repeat (T, $n);
foreach($tab as $key => $val) {
$t = array_tostring_a_val($key)." => ";
if (is_array($val)) {
$t .= "array (".N.array_tostring_a_parse($val, $n+1).N.$space.")";
} elseif ($val === true){
$t .= 'true';
} elseif ($val === false){
$t .= 'false';
} elseif ($val === null){
$t .= 'null';
} else {
$t .= array_tostring_a_val($val);
}
$lv[] = $t;
}
return $space.implode(",".N.$space, $lv);
}
}
function array_tostring_val ($key) {
return is_numeric($key) ? $key : "'".addqslashes($key, '"')."'";
}