Zitat von
http://wiki.autoit.de/wiki/index.php/Tutorial#Arrays
Arrays als Elemente eines Arrays
Es ist möglich, innerhalb eines Arrays andere Arrays zu speichern. Das ist z.B. sinnvoll, wenn ich aus einer Datei Daten einlese, die innerhalb einer Zeile mehrere Werte getrennt durch Trennzeichen enthält. (z.B. CSV-Datei)
Unsere "muster.csv" könnte so aussehen:
1. Spalte;2. Spalte;3. Spalte;4. Spalte;5. Spalte
2. Zeile;1. Inhalt;2. Inhalt;3. Inhalt;4. Inhalt
3. Zeile;5. Inhalt;6. Inhalt;7. Inhalt;8. Inhalt
4. Zeile;9. Inhalt;10. Inhalt;11. Inhalt;12. Inhalt
So kann ich die Daten zur Weiterverarbeitung in ein Array einlesen:
#include <File.au3>
Dim $arCSV
$csvFile = "muster.csv"
_FileReadToArray($csvFile, $arCSV)
Im Element $arCSV[0] ist die Anzahl der Zeilen (= Array-Elemente) hinterlegt. Jedes Element in $arCSV enthält eine Zeile der Datei "muster.csv". Die einzelnen Werte sind durch ";" getrennt. Mithilfe von StringSplit() kann jetzt jeder Wert vereinzelt werden. Dabei wird der enthaltene String eines Elements durch das mit StringSplit() entstehende Array ersetzt.
For $i = 1 To $arCSV[0]
$arCSV[$i] = StringSplit($arCSV[$i], ";")
Next
StringSplit() liefert ein 1D-Array mit Angabe der enthaltenen Elemente an Pos[0]. Wenn ich nun auf das Element[3] der $arCSV zugreifen möchte und aus dem enthaltenen Array die Anzahl ausgeben will wäre dies also: $arCSV[3] ==> [0] Wie soll hier das Element abgefragt werden ? $arCSV[3][0] ==> Das wäre ein 2D-Array, das aber nicht vorliegt, also Falsch! ($arCSV[3])[0] ==> Das trennt zwar logisch, ist aber syntaktisch nicht möglich, auch Falsch! Hier gibt es nur den Weg über einen Zwischenschritt:
$x = $arCSV[3]
MsgBox(0,'', 'Anzahl dert Elemente von $arCSV[3]: ' & $x[0])