Array in Array verändern

  • Hey Leute,

    ich habe in einem Array einen Array der folgendermaßen aussieht:

    Spoiler anzeigen
    [autoit]

    Local $aTemp[3] = ["Test1", "Test2", "Test3"]
    Local $myArray[5] = [$aTemp, "", "", "", ""]

    [/autoit]

    nun kann ich den erstem Array im zweiten Array so auslesen:

    Spoiler anzeigen
    [autoit]

    ConsoleWrite(($myArray[0])[1])

    [/autoit]

    Die Ausgabe ist dann vollkommen Korrekt.

    Nun möchte ich aber Werte in dem Array im Array verändern ohne ihn irgendwo zwischenzuspeichern dann zu ändern und wieder in den $myArray zurückzuverfrachten.

    Irgendeiner ne Idee?

  • Nun möchte ich aber Werte in dem Array im Array verändern ohne ihn irgendwo zwischenzuspeichern dann zu ändern und wieder in den $myArray zurückzuverfrachten.

    Geht nicht.
    Der Grund: Bei Variablenzuweisungen wird in AutoIt nicht die Referenz, sondern die Werte zugewiesen.
    Es wird also immer eine Kopie erstellt.
    Hier zur Veranschaulichung:

    [autoit]

    Global $aTemp[3] = ["Test1", "Test2", "Test3"]
    $x = $aTemp
    $x[1] = "Test4"
    ConsoleWrite($aTemp[1] & @CRLF)

    [/autoit]


    Du schreibst in deinem Skript folgendes:

    [autoit]

    ConsoleWrite(($myArray[0])[1])

    [/autoit]


    Implizit ist das aber das selbe als würdest du schreiben:

    [autoit]

    $x = $myArray[0]
    ConsoleWrite($x[1])

    [/autoit]

    Es wird also immer im Hintergrund bei dieser Schreibweise eine Kopie des eingebetteten Arrays erzeugt.
    Das sollte man im Hinterkopf behalten, da dies die Performance eines Skriptes ziemlich beeinflussen kann.