Gibt die Elemente einer Spalte aus einem 1D oder 2D Array ohne deren Duplikate zurück
#include <Array.au3>
_ArrayUnique ( Const ByRef $aArray [, $iColumn = 0 [, $iBase = 0 [, $iCase = 0 [, $iCount = $ARRAYUNIQUE_COUNT [, $iIntType = $ARRAYUNIQUE_AUTO]]]]] )
$aArray | Das zu verwendende Array |
$iColumn | [optional] zu verwendende Spalte (0-basierend) - Standard ist 0 (nur 2D Array)) |
$iBase | [optional] Ist das Array 0-basiert oder 1-basiert. Standard 0: 0-basiert |
$iCase | [optional] Flag welches definiert, ob die Groß- und Kleinschreibung beachtet werden soll. Standard 0 : Groß- und Kleinschreibung wird nicht beachtet. |
$iCount | [optional] Flag welches definiert, ob das [0] Element die Anzahl der zurückgegebenen Items enthält (Standard). Siehe Bemerkungen für Details. |
$iIntType | [optional] Flag um den Funktionsalgorithmus zu ändern. Siehe Bemerkungen für Details. |
Erfolg: | ein 1D Array welches jedes Element der Spalte maximal einmal enthält |
Fehler: | Setzt das @error Flag auf ungleich null |
@error: | 1 - $aArray ist kein Array oder hat keine zu prüfenden Elemente. 2 - $aArray ist kein 1D oder 2D Array 3 - $iBase oder $iCase enthalten einen ungültigen Wert 4 - $iCount enthält einen ungültigen Wert 5 - $iIntType enthält einen ungültigen Wert 6 - $iColumn außerhalb der Arraygrenzen 7 - Fehlanpassung von Int32 und Int64 Items - benötigt $iIntType um gesetzt werden zu können |
Gibt ein Array zurück welches jedes Element maximal einmal enhält.
Standardmäßig ist $iCount auf $ARRAYUNIQUE_COUNT (1) gesetzt und die Anzahl im Array wird im Element [0] gesetzt. Wird für $iCount $ARRAYUNIQUE_NOCOUNT (0) verwendet, so befindet sich in [0] nicht die Anzahl der Einträge, sondern der 1. Wert.
Die Funktion kann einen schnellen Algorithmus verwenden, solange die zu untersuchenden Elemente keine Int64-Werte enthalten (z. B. 64-Bit-Integer, Handles, Zeiger). Wenn diese Werte vorhanden sind, muss die Funktion einen langsameren Algorithmus verwenden. Wenn man den Parameter $iIntType einstellen, wird das Funktionsverhalten wie folgt geändert:
$ARRAYUNIQUE_AUTO (0) (Standard) : Wenn das erste Item kein Integer ist, läuft der schnelle Algorithmus. Es wird ein Fehler zurückgegeben, wenn Int64-Items gefunden werden.
: Wenn das erste Item ein Integer ist, wird der relevante FORCE32 / 64-Wert eingesetzt.
$ARRAYUNIQUE_FORCE32 (1) : Erzwingt alle Integer auf Int32. Es läuft ein schneller Algorithmus. Es wird ein Fehler zurückgegeben, wenn Int64-Items gefunden werden.
$ARRAYUNIQUE_FORCE64 (2) : Erzwingt alle Integer auf Int64. Es läuft ein langsamer Algorithmus. Es wird ein Fehler zurückgegeben, wenn Int32-Items gefunden werden.
$ARRAYUNIQUE_MATCH (3) : 0x00000123 und 0x0123 betrachten den gleichen Wert. Nur der zuerst aufgetretende wird zurückgegeben. Es läuft ein langsamen Algorithmus.
$ARRAYUNIQUE_DISTINCT (4) : 0x00000123 und 0x0123 werden als ausgedrückt betrachtet. Es werden beide zurückgegeben. Es läuft ein langsamen Algorithmus.
Die Abweichung von der Standardeinstellung $ARRAYUNIQUE_AUTO ist nur erforderlich, wenn bekannt ist oder vermutet wird, dass Int64-Werte untersucht werden. Die Anforderung, einen langsameren Algorithmus zu verwenden, wenn es um Int64-Werte geht, ist eine Beschränkung des Scripting.Dictionary-Objekts, das innerhalb der Funktion verwendet wird, nicht von AutoIt selbst.
#include <Array.au3>
Local $aArray[10] = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] ; Erstellt ein 1D Array, welches doppelte Werte enthält.
_ArrayDisplay($aArray, "$aArray") ;Zeigt das Array
Local $aNewArray = _ArrayUnique($aArray) ; Standardparameter verwenden
_ArrayDisplay($aNewArray, "$aNewArray zeigt die erste Dimension von $aArray") ;Zeigt das Array
; Deklariert ein 2D Array, welches doppelte Werte enthält.
; _ArrayUnique ist zu verwenden, um ein neues Array zu erstellen, welches jeden Wert maximal einmal enthält.
#include <Array.au3>
Local $aArray[6][2] = [[1, "A"], [2, "B"], [3, "C"], [1, "A"], [2, "B"], [3, "C"]]
_ArrayDisplay($aArray, "2D") ; zeigt das aktuelle Array
Local $aArrayUnique = _ArrayUnique($aArray) ; Standardparameter verwenden um ein Array der ersten Spalte zu erstellen
_ArrayDisplay($aArrayUnique, "$aNewArray zeigt die erste Dimension von $aArray") ; Zeigt das Array
$aArrayUnique = _ArrayUnique($aArray, 1) ; Erstellt ein Array aus der zweiten Spalte
_ArrayDisplay($aArrayUnique, "$aNewArray zeigt die zweite Dimension von $aArray") ; Zeigt das Array