Mailinglisten-Archive |
Hallo und guten Morgen! Ich sitze nun seit zwei Stunden mit übermüdeten Augen vor folgendem Problem. Ich möchte eine Datei, in meinem Fall eine Kategorienliste von PhpAuction, einlesen und als mehrdimensionales Array speichern. Die Datei selbst ist so aufgebaut. 1 at Hauptkategorie 2 at Unterkategorie 3 at Unterkategorie von Unterkategorie 4 at Unterkategorie von Unterkategorie von Unterkategorie 1 at Hauptkategorie 2 at Unterkategorie 3 at Unterkategorie von Unterkategorie u.s.w Ich gehe nun hin und lese die Datei Zeile für Zeile ein. Mit: $entry = fgets($import, 4096); $level = substr($entry, 0, 1); $value = substr($entry, 2, strlen($entry)); Prüfe ich nun welchen Level die aktuelle Zeile hat. $value enthält dann den Kategorienamen. Funktioniert soweit auch wuderbar. Nun kommt die Sache mit dem Erzeugen des Arrays. Wenn Level nun eine 1 ist speicher ich den Wert (value) folgendermassen. $arr_KatMain[$l1c] = $value; Damit sollte in $arr_kat[0] z.B. Auto stehen. Nun lautet die zweite Zeile der Datei: 2 at BMW Das dieser Eintrag zur Kategorie 1 gehört wollte ich das mit: $arr_KatMain[$l1c][$l2c] = $value; machen und bin davon ausgegangen, dass dies so funktioniert. Das Ganze als Code sieht so aus: $debug = true; $l1c = -1; $str_ErrOpen = 'Fehler: Kategoriendatei konnte nicht geöffnet werden!'; $arr_KatMain = array(); $import = fopen('./categories.txt', 'r') or die($str_ErrOpen); while(!feof($import)) { $entry = fgets($import, 4096); $level = substr($entry, 0, 1); $value = substr($entry, 2, strlen($entry)); $value = str_replace("\n", "", $value); if ($debug) print $level . " " . $value . "<br />\n"; if ($level == 1) { $l2c = -1; $l3c = -1; $l4c = -1; $l5c = -1; $l6c = -1; $l7c = -1; $l1c++; $arr_KatMain[$l1c] = $value; } if ($level == 2) { $l2c++; $arr_KatMain[$l1c][$l2c] = $value; } if ($level == 3) { $l3c++; $arr_KatMain[$l1c][$l2c][$l3c] = $value; } if ($level == 4) { $l4c++; $arr_KatMain[$l1c][$l2c][$l3c][$l4c] = $value; } if ($level == 5) { $l5c++; $arr_KatMain[$l1c][$l2c][$l3c][$l4c][$l5c] = $value; } if ($level == 6) { $l6c++; $arr_KatMain[$l1c][$l2c][$l3c][$l4c][$l5c][$l6c] = $value; } if ($level == 7) { $l7c++; $arr_KatMain[$l1c][$l2c][$l3c][$l4c][$l5c][$l6c][$l7c] = $value; } } fclose($import); Das Ergebnis: Es sind insgesamt 32 Hauptkategorien und etliche Unterkategorien in der Datei. Die Ausgabe sieht folgend aus: (Das einzige was stimmt ist der Arraycount) Array ( [0] => AAAAAAHDDFGGGHHIJKKMMMMNPPPVRSTTKM [1] => BCDHHKKLLMMTWPRRSSVWZF [2] => BBBBBBBSKBKAS [3] => AGGHKKKMMMMPPSWZt [4] => VDÖSEIMVGZn [5] => BHEKKNRSCSSZSWriften [6] => PBro-Schreibwaren [7] => ABDDGGGHIKKLLLMMTSSS [8] => ACCCCDDEFFGGKKKMMMMMNNNPRSFS [9] => AABBCFFFKKNSTWWZ [10] => DVFFTWideo [11] => CCDDDFFFKKLMOOOPPSSF [12] => BGKKKKKSSSSWäte [13] => ABBEEEFGGHIKLMRSSUWWW [14] => WGIAGilien [15] => DDDDDHHHKKMHKssoires [16] => MMMMSRRWu [17] => HSHPHPPATIFTFTion [18] => ABBDDGHHKKKKLMMMRSSSTTW [19] => MMMMMMMMMMMMMEPPH [20] => CCCCCCCCCCCCVVVVVVVVVVVSHFPT [21] => BDDEEGSLTZSNente [22] => KPZILMSospiele [23] => KBUGFTUFBBMRRLRR [24] => AABCDDeEFFFFHMMMPPRRRSSSSTTTTTTÜVWW [25] => ABBFKLMOPPSTS [26] => ABBBBEFGHKKLLKMPPSSSSSSTS [27] => AFFGBBCFFIJRRSSWWTWSFP [28] => KKSGets [29] => FHKKPRVS [30] => DDDDEFFFGLPRSSVVWZF [31] => LNKMWKSMUEGHHPPSSTWEMPFLZJ ) Ich hoffe, das war einigermassen verständlich und jemand kann helfen! Mit freundlichen Grüßen Frank Liebelt
php::bar PHP Wiki - Listenarchive