Hi,
ich halte Konfigdaten nicht einer INI- oder XML-Datei, sondern in einem PHP-Script, das nur solche Daten enthält. Das sieht z.B. so aus (Keynamen hier nur "abstrakt"):
$cfg['abc']['dfkle'] = "Wert";
$cfg['abc']['ilk'] = "Wert";
$cfg['abc']['tiouid'] = "Wert";
$cfg['defg']['roitzf'] = "Wert";
$cfg['defg']['dflfgzhj'] = "Wert";
$cfg['defg']['dflfgzhj']['eroiut'] = "Wert";
$cfg['hijklm']['erior'] = "Wert";
$cfg['hijklm']['dfkf'] = "Wert";
$cfg['hijklm']['dfkf']['rotfklgf'] = "Wert";
Ein verschachtelter Array also. In PHP genügt es, die Konfigdatei zu inkludieren, und der Array $cfg steht sofort zur Verfügung. Nun soll unter anderem aber die Konfiguration geändert und zurückgeschrieben werden. Das Ändern ist ja kein Problem, aber um den geänderten Array aus dem Arbeitsspeicher in die PHP-Konfigdatei zurückzuschreiben muß ja z.B. aus $cfg['hijklm']['dfkf']['rotfklgf'] ein String wie "$cfg['hijklm']['dfkf']['rotfklgf']" werden. Leider habe ich noch keinen Weg gefunden, wie ich das rekursiv für den gesamten Array hinbekomme. Folgende Hilfsfunktion habe ich:
function array_to_str($array){
foreach($array as $key => $val) {
if(is_array($val))
$str .= "['".$key."']".array_to_str($val)."\n";
else {
$str .= "['".$key."'] = "".$val."";\n";
}
}
return($str);
}
Aber die tut noch nicht so wie sie soll. Es kommt da so was raus wie:
['hijklm']['erior'] = "Wert";
['dfkf'] = "Wert";
Anstelle von:
['hijklm']['erior'] = "Wert";
['hijklm']['dfkf'] = "Wert";
Kennt jemand eine saubere Lösung dafür?
Gruß Rainer