Zähler von For Schleife im Array verwenden

  • Könnt ihr hier helfen?

    Ich habe eine Anzahl von Arrays die ich kenne.

    Diese Anzahl möchte ich in einer For Schleife weiterverarbeiten.

    for $a = 1 to 73

    For $i=1 to UBound($List57)
    $bla = _ArraySearch ($infoarr, $List57[$i-1])
    $sSearch = $List57[$i-1]

    Hier spreche ich also ein ganz bestimmtes Array an, aber ich möchte es so haben, dass die innere For Schleife das $a der erst an der Variable $List hat.

    Also so hier:


    for $a = 1 to 73

    For $i=1 to UBound($List&$a)
    $bla = _ArraySearch ($infoarr, $List&$a[$i-1])
    $sSearch = $List&$a[$i-1]

    Also nicht der Wert sondern der Name der Variable soll erweitert werden, damit die innere For Schleife all meine Arrays durchgeht.

    Eine Idee wie ich das machen kann?

    Danke

    Viele Grüße
    Steve

    • Offizieller Beitrag

    Das ist so nicht möglich. Es gibt zwar den Befehl "Eval" mit dem man Variablen zusammensetzen kann, aber damit kann man nicht auf die Arraywerte zugreifen.
    Also so:

    [autoit]


    Global $aList1[5] = [1, 2, 3, 4, 5]
    Global $aList2[8] = [1, 2, 3, 4, 5, 6, 7, 8]
    Global $aList3[12] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To 3
    For $j = 0 To UBound(Eval('aList' & $i)) - 1
    ConsoleWrite('innerer Schleifenwert = ' & $j & @CR) ; <- hier kann man mit Eval nicht auf den Arraywert zugreifen
    Next
    Next

    [/autoit]

    Als Lösung würde ich ein 2D-Array verwenden:

    [autoit]


    Global $a2DList[3][12] = [[1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0], [1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]]

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound($a2DList, 1) - 1
    For $j = 0 To UBound($a2DList, 2) - 1
    If $a2DList[$i][$j] <> 0 Then
    ConsoleWrite($a2DList[$i][$j] & @CR)
    EndIf
    Next
    Next

    [/autoit]
  • man kann das aber trotzdem machen, ohne ein 2D Array zu verwenden ;)

    [autoit]


    Global $aList1[5] = [10, 20, 30, 40, 50]
    Global $aList2[8] = [11, 21, 31, 41, 51, 61, 71, 81]
    Global $aList3[12] = [12, 22, 32, 42, 52, 62, 72, 82, 92, 102, 112, 122]

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To 3
    For $j In Eval('aList' & $i)
    ConsoleWrite('innerer Schleifenwert = ' & $j & @CR)
    Next
    Next

    [/autoit]


    habe die Zahlen im Array verändert, damit man es besser sieht :)

    durch das For In bekommt $j den bei jedem schleifen durchlauf den wert des jeweiligen Array elements
    bei For To wird einfach nur eine zähler variable erhöt

    mfg