Frage zu parse_ini_file()

Hallo miteinander,

die normale Verwendung ist mir klar.

Möchte aber so etwas wie „Untergruppe“ in einer Gruppe erzeugen:

auf das ini-file „übertragen“ würde es so aussehen:

[gruppe1]
dies=das
nochwas=[untergruppe1]das=dies

[gruppe2]
etc.....

klar das es so nicht funktioniert.

Wenn es überhaupt geht … wie müsste es aussehen?

herzlichen Gruß
Nitya

Hallo

Ich hab noch nie eine ini-Datei gesehen die Untergruppen gehabt hätte, von daher würde es mich wundern wenn parse_ini_file() sowas unterstützt.

Üblicherweise wird das so gehandhabt:

[gruppe1]
dies=das
untergruppe1_das=dies
untergruppe1_jedes=dieses

[gruppe2]
etc…

Es macht dann natürlich ein wenig Aufwand, aus dem Rückgabewert von parse_ini_file() ein mehrdimensionales Array zu erstellen, vor allem wenn man vorher nicht weiß, welche Variablen in der ini-Datei festgelegt sind. Aber für sowas ist ja eine ini-Datei auch nicht gedacht.
Wenn man die Variablennamen in der ini-Datei kennt, kann man es ja so machen:

foreach ($parsed\_ini as $key=\>$value)
{
 if (substr($key,0,13)=='untergruppe1\_')
 {
 $parsed\_ini['untergruppe1'][substr($key,13)]=$value;
 unset($parsed\_ini[$key]);
 }
}

sigterm

Hallo,

danke für die Antwort.

Es macht dann natürlich ein wenig Aufwand, aus dem
Rückgabewert von parse_ini_file() ein mehrdimensionales Array
zu erstellen

das geht doch in dem $process_sections auf true gesetzt wird.

O.k. gebe ja zu, dass ich den eigentlichen „Sinn“ dieser Funktion missbrauchen will, weil es um Beschreibung geht.
Und unter einem Key sollen mehrere, unterschiedliche Werte greifbar sein.

Ich habe gelesen, dass sich innerhalb der Gruppen/Sectionen nochmals Arrays erzeugen lassen:
[gruppe1]
dies=das
nochwas[]=das:dies
nochwas[]=foo:bar

Hätte dann in $ini_array[‚gruppe1‘][‚nochwas‘][0-X] meine Werte.
Funktioniert aber leider nicht.

Wenn die Werte einzeln in die Gruppe geschrieben werden, hängt es daran, dass weder die Keys noch die Anzahl festliegen.
Ist zu umständlich für die Keys eine Prüfung durchzuführen - würde das dann mit dem parse_ini_file ganz lassen.

herzlichen Gruß
Nitya

Ich habe mich geirrt, es ist doch in begrenztem Umfang möglich.

[gruppe1]
dies=das
nochwas[]=dies
nochwas[]=bar

ergibt:

array (
 'gruppe1' =\> array (
 'dies' =\> 'das',
 'nochwas' =\> array ( 0 =\> 'dies', 1 =\> 'bar')
 )

Auf diese Art lässt sich aber nur eine zusätzliche Ebene erzeugen und die Indizes werden automatisch von 0 an vergeben. Eigene Werte lassen sich aber wohl nicht festlegen.

sigterm

Hallo,

Ich habe mich geirrt, es ist doch in begrenztem Umfang
möglich.
‚nochwas‘ => array ( 0 => ‚dies‘, 1 => ‚bar‘)

ja genauso sollte es sein, jedoch gelingt es mir nicht.
Habe gerade mal geschaut: bei meinem Hoster läuft PHP Version 4.4.9
Kann das damit zusammenhängen?
parse_ini_file() ab Vers. 4 … aber dieses Feature vielleicht erst ab Vers. 5 ?

Auf diese Art lässt sich aber nur eine zusätzliche Ebene
erzeugen und die Indizes werden automatisch von 0 an vergeben.
Eigene Werte lassen sich aber wohl nicht festlegen.

auf die Keys kann ich dadurch verzichten, wenn ich sie mit in den Werte nehme … nochwas[]=das:dies

Wenn es denn mal funktionieren würde.

Mache es bisher so, dass ich nochwas=more1 eintrage und more1 ist der Key für die Section, in der dann die Werte stehen.
Hätte gerne alles in einer Gruppe und die Schleife dafür sieht auch ein bißchen wirr aus :smile:)

foreach( $ini[$ini[$sec]['nochwas']] as $key=\> $val) { ... }

Eigentlich ist diese Funktion super … eine Anweisung und schwupps ist alles im Array.

herzlichen Gruß
Nitya

Ja, mit 4.4.9 gehts bei mir auch nicht.

sigterm

Ja, mit 4.4.9 gehts bei mir auch nicht.

na dann ist ja alles klar!!

DANKE

herzlichen Gruß
Nitya