Array aus Ini erstellen

  • Hallo.
    Ich war gerade dabei einen Item-ersteller zu schreiben, und wollte diese Items nun in einem ini File speichern - was auch wunderbar funktioniert.
    Die Ini ist so aufgebaut:

    Code
    [ID32]
    ID=32
    Type=32
    Name=test
    Price=32
    [ID46]
    ID=46
    Type=4
    Name=test2
    Price=300

    Nun möchte ich per Knopfdruck diese Datei in einen Array speichern, und diese somit auch auslesen können.
    Ich hatte mir vorgestellt zu überprüfen wieviele sections die datei hat und dann mit einer for schleife alle daten auslesen lassen.
    Das problem ist: Ich weiß nicht wie.
    Perfekt wäre es wenn mehrere Arrays erstellt werden - also einer für ID, einer für Type einer für Name und einer für Price undzwar so angeordnet dass die ID von $arID[0] auf den Namen von $arName[0] passt.
    Ich hoffe das ist verständlich und mir kann jemand helfen...

    Mfg

  • Den IniWrite-Befehl hast du ja schon gefunden. Von dort ist es nicht mehr weit:
    $arSections=IniReadSectionNames($file) gibt dir alle sections in einer datei.
    Das Array kannst du dann durchlaufen und für jede section ein
    $arSection=IniReadSection ($file,$arSections[$j]) aufrufen. Dort bekommst du ein 2D-Array mit den Key, value-paren.
    Nun kannst du vor der Schleife einfach die Arrays erstellen
    local $arIDs[UBound($arSections)],$arNames[UBound($arSections)],...
    und in der Schleife, in der du die Sections durchgehst einfach entsprechend eintragen:
    switch $arSection[$i][0]
    case "ID":
    $arIDs[$i]=$arSection[$i][1]
    ;...
    Am Ende hast du deine Arrays mit den Werten :)

    MfG Kanashius

  • Danke erstmal für die schnelle Antwort.

    Ich habe aber trozdem noch zwei Fragen:
    Ich habe jetzt folgendes geschrieben:

    AutoIt
    func _readIni()
    	$arSections = IniReadSectionNames($itemList)
    	Global $arIDs[UBound($arSections)], $arTypes[UBound($arSections)], $arNames[UBound($arSections)], $arPrices[UBound($arSections)]

    Wie genau baue ich jetzt diesen zweiten Part ein, wo ich die arrays fülle..?
    Ich glaube wenn du mir das als script schreiben würdest, könnte ich es villeicht besser verstehen.

    Und das zweite:
    Du hast geschrieben

    Zitat

    Das Array kannst du dann durchlaufen und für jede section ein
    $arSection=IniReadSection ($file,$arSections[$j]) aufrufen.

    Woher kommt das $j oder was ist $j?

    Wäre cool wenn du mir da noch weiterhelfen könntest.

    Einmal editiert, zuletzt von ExoBiTe (26. April 2016 um 15:47)

  • Das sieht doch schon sehr gut aus. Damit es etwas Portabel einsetzbar ist sollte man das Gebilde noch in eine Funktion packen.


    lg
    M