ini file multidimensionale arrays
Ik weet dat ik in een ini file sections kan maken, bijvoorbeeld:
[instellingen]
foo = bar
Nu vraag ik me af of ik van foo een array kan maken, en zo ja hoe?
Dus eigenlijk dat je zoiets krijgt als:
Kan dat in een ini file?
Juist, niets, het is gewoon tekst.
Dus hoe jij het in een ini wegschrijft maakt niets uit, als je maar weet hoe en hoe je het weer wilt inlezen. Een array kan je dus (natuurlijk) niet definieren in een ini, maar dat is ook totaal de verkeerde vraag.
Als je in je voorbeeld die foo=array gewoon eens weglaat heb je toch wat je wilt? Alle data uit je array staat erin en je kan het er weer uitlezen. Key en waarde.
Stel ik heb een aantal bestanden met een naam en een pad, dan wil ik zoiets als dit doen:
[bestanden]
naam = naambestand1
pad = padbestand1
naam = naambestand2
pad = padbestand2
naam = naambestand3
pad = padbestand3
Zoiets dus...
Dus als je een array in het geheugen hebt kan je die uiteraard met een foreach loop wegschrijven en inlezen, maar dat maakt het nog geen array in de ini.
edit; zou alleen niet weten waarom je een array nodig hebt in een ini..?
Gewijzigd op 17/02/2012 11:27:30 door Jaron T
Hoe moet ik dit dan doen:
[bestanden]
naam = naambestand1
pad = padbestand1
naam = naambestand2
pad = padbestand2
naam = naambestand3
pad = padbestand3
Het zijn configuratie instellingen die ik er handmatig in wil zetten. In het bovengenoemde voorbeeld zouden naam en pad elkaar telkens overschrijven. Dat werkt dus niet. Dus ik vraag me af of ik een soort subsecties kan maken. Zoiets als dit:
[bestanden]
[1]
naam = bla
pad = bla
[2]
naam = bla
pad = bla
Maar goed, misschien kan ik beter geen ini file gebruiken en dan toch maar een php file?
naam1 = ...
pad1 = ...
naam2 = ...
pad2 = ....
etc etc
Code (php)
Dan gaat dit niet werken omdat die keys in jouw geval telkens een andere waarde hebben. En ja dan kan ik wel een teller gaan laten meelopen maar dat lijkt me vrij omslachtig.
Gewijzigd op 17/02/2012 11:38:31 door Ozzie PHP
Waarom zet je dat niet gewoon in een database tabel genaamd "setting"? Daar kan je het key value principe toepassen om het dynamisch te maken.
Ozzie PHP op 17/02/2012 11:38:20:
En ja dan kan ik wel een teller gaan laten meelopen maar dat lijkt me vrij omslachtig.
Dan doe je het lekker niet....
Dit zit nog helemaal vooraan in m'n framework. Ik heb daar nog geeneens een db connection en ik wil dit ook niet in de database. Maar goed... ik ga maar weer terug naar een php file. Thanks anyhow.
Waarom zet je dat niet gewoon in een database tabel genaamd "setting"? Daar kan je het key value principe toepassen om het dynamisch te maken.
Jaron T op 17/02/2012 12:27:22:
Waarom zet je dat niet gewoon in een database tabel genaamd "setting"? Daar kan je het key value principe toepassen om het dynamisch te maken.
Zie mijn voorgaande antwoord :) Dat was voor jou bedoeld.
Erwin H op 17/02/2012 12:05:50:
Dan doe je het lekker niet....
Dussss... waar slaat dat nou weer op??? Dit soort opmerkingen ben ik van jou nou net niet gewend.
Code (php)
1
2
3
4
5
2
3
4
5
bestanden.0.naam = 'test'
bestanden.0.pad = /path/
bestanden.1.naam = 'dfgdfg'
bestanden.1.pad = /sdf/dfd/
etc..
bestanden.0.pad = /path/
bestanden.1.naam = 'dfgdfg'
bestanden.1.pad = /sdf/dfd/
etc..
Zo gaat het in ieder geval in Zend Framework :)
Je zou ook naar YAML kunnen kijken dan is het net zo als in jouw eerste voorbeeld:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
bestanden
bestand
naam : 'sfdgd'
pad : '/dfd/fdfd'
bestand
naam : 'gdfg:
pad : '/sdfdf/dfdfd'
bestand
naam : 'sfdgd'
pad : '/dfd/fdfd'
bestand
naam : 'gdfg:
pad : '/sdfdf/dfdfd'
Ik ben niet zo bekend met yml maar zo ongeveer..
Gewijzigd op 17/02/2012 12:58:33 door kees Schepers
Thanks Kees! Is het yaml of yml? Met welke functie parse je dat? Grt. Ozzie
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
[section]
var[] = value1
var[] = value2
Array
(
[section] => Array
(
[0] => value1
[1] => value2
)
)
var[] = value1
var[] = value2
Array
(
[section] => Array
(
[0] => value1
[1] => value2
)
)
Gewijzigd op 17/02/2012 13:16:20 door Jurgen B
Symfony en ZF2 hebben wel yml reader classes, daar kun je wel wat nuttigs uithalen denk ik :) En yml is afkorting van yaml :p
schrijven:
Ophalen:
@Jurgen: ja dat wist is... alleen kun je nog steeds telkens maar 1 value toewijzen.
In plaats van dit:
var[] = value1
zou ik graag dit hebben
Maar dat gaat helaas niet :(
Misschien moet ik het toch gewoon een php bestand laten en de variabelen los erin zetten... en dan via get_defined_vars alle variabelen opvragen en in een array stoppen. Geen idee of dat gaat lukken trouwens...
Tevens kan je in ini dit doen: