Funktionreferenz


_ArraySearch

Beschreibung anzeigen in

Findet einen Eintrag in einem 1D oder 2D Array. Ähnlich wie _ArrayBinarySearch(), mit der Ausnahme, dass kein sortiertes Array erforderlich ist

#include <Array.au3>
_ArraySearch ( Const ByRef $aArray, $vValue [, $iStart = 0 [, $iEnd = 0 [, $iCase = 0 [, $iCompare = 0 [, $iForward = 1 [, $iSubItem = -1 [, $bRow = False]]]]]]] )

Parameter

$aArray Das zu durchsuchende Array
$vValue Der Suchbegriff
$iStart [optional] Startindex für die Suche
$iEnd [optional] Stoppindex für die Suche
$iCase [optional] Wenn auf 1 gesetzt ist, wird die Groß- und Kleinschreibung berücksichtigt.
$iCompare [optional]
    0 Vergleich von Variablen des gleichen Typs (Standard), "String" = 0, "" = 0 oder "0" = 0 passt (Wenn $iCase = 0)
    1 führt eine Teilsuche aus
    2 Vergleich passt, wenn die Variablen vom gleichen Typ sind und den gleichen Wert haben
    3 Vergleich verwendet als Muster einen regulären Ausdruck der in $vValue geschrieben steht
$iForward [optional] Wenn auf 0 gesetzt wird das Array rückwärts (vom Ende zum Anfang) durchsucht anstatt vorwärts (vom Anfang zum Ende)
$iSubItem [optional] Sub-index in dem bei einem 2D Array gesucht werden soll
$bRow [optional] Falls True, dann setzt $iSubItem die zu durchsuchende Zeile - False (Standard) durchsucht Spalten

Rückgabewert

Erfolg: Der Index wo $vValue gefunden wurde
Fehler: -1 und setzt das @error Flag auf ungleich null
@error: 1 - $aArray ist kein Array
2 - $aArray ist kein 1D oder 2D Array
3 - $aArray ist leer
4 - $iStart ist größer als $iEnd
5 - Array ist kein 2D Array und $bRow ist auf True gesetzt
6 - $vValue wurde im Array nicht gefunden

Bemerkungen

Diese Funktion kann langsamer sein als _ArrayBinarySearch(), aber sie ist nützlich, wenn das Array vor der Suche nicht sortiert werden kann.

Die Werte von $iCompare können nicht miteinander kombiniert werden.

Verwandte Funktionen

_ArrayBinarySearch, _ArrayFindAll

Beispiel

Beispiel 1

#include <Array.au3>
#include <MsgBoxConstants.au3>

Local $aArray[6][4]
For $i = 0 To 5
    For $j = 0 To 3
        $aArray[$i][$j] = "#" & $i & $j
    Next
Next
_ArrayDisplay($aArray, "Suche nach '#32'", Default, 8)

; Suche in Spalten (Suchen in Spalte 2)
Local $iIndex = _ArraySearch($aArray, "#32", 0, 0, 0, 0, 1, 2)
MsgBox($MB_SYSTEMMODAL, "Gefunden '#32'", "Spalte 2 on Zeile " & $iIndex)

; Suche in Zeilen (Suchen in Zeile 3)
$iIndex = _ArraySearch($aArray, "#32", 0, 0, 0, 0, 1, 3, True)
MsgBox($MB_SYSTEMMODAL, "Gefunden '#32'", "Zeile 3 in Spalte " & $iIndex)

Beispiel 2

#include <Array.au3>
#include <MsgBoxConstants.au3>

;verwendet ein 2D Array

Local $avArray[6][2] = [ _
        ["String0", "SubString0"], _
        ["String1", "SubString1"], _
        ["String2", "SubString2"], _
        ["String3", "SubString3"], _
        ["String4", "SubString4"], _
        ["String5", "SubString5"]]

_ArrayDisplay($avArray, "$avArray")

Local $sSearch = InputBox("_ArraySearch() Demo", "Welcher String soll gesucht werden?")
If @error Then Exit

Local $sColumn = InputBox("_ArraySearch() Demo", "Welche Spalte soll durchsucht werden?")
If @error Then Exit
$sColumn = Int($sColumn)

Local $iIndex = _ArraySearch($avArray, $sSearch, 0, 0, 0, 1, 1, $sColumn)
If @error Then
    MsgBox($MB_SYSTEMMODAL, "Nicht gefunden", '"' & $sSearch & '" wurde nicht in der Spalte ' & $sColumn & ' gefunden.')
Else
    MsgBox($MB_SYSTEMMODAL, "Gefunden", '"' & $sSearch & '" wurde im Array an Stelle ' & $iIndex & ' in der Spalte ' & $sColumn & ' gefunden.')
EndIf