UDF > Array >


_ArraySearch

Cherche une valeur dans un tableau 1D ou 2D. Similaire à _ArrayBinarySearch(), sauf que le tableau n'a pas besoin d'être trié

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

Paramètres

$aArray Le tableau où chercher
$vValue Ce qu'il faut rechercher dans $aArray
$iStart [optionnel] Index du tableau où commencer la recherche
$iEnd [optionnel] Index du tableau où arrêter la recherche
$iCase [optionnel] Si la valeur est 1, la recherche est sensible à la casse
$iCompare [optionnel]
    0 - Convertit les variables dans le même type (par défaut), "string" = 0, "" = 0 ou "0" = 0 (si $iCase = 0)
    1 - Exécute une recherche partielle
    2 - La comparaison retourne true si les variables ont le même type et la même valeur
    3 - La comparaison utilise un modèle d'expression régulière fourni par $vValeur
$iForward [optionnel] Si défini à 0, la recherche dans le tableau se fait de la fin au début (au lieu du début à la fin)
$iSubItem [optionnel] Sous-index de recherche dans un tableau 2D
$bRow [optionnel] Si True, $iSubItem définit la ligne où chercher. False, par défaut, recherche dans les colonnes

Valeur de retour

Succès: Retourne l'index où $vValeur a été trouvé.
Échec: Retourne -1 et définit @error <> 0.
@error: 1 - $aArray n'est pas un tableau
2 - $aArray n'est pas un tableau 1D ou 2D
3 - $aArray est vide
4 - $iStart est supérieure à $iEnd
5 - Le tableau n'est pas 2D et $bRow est à true
6 - $vValeur n'a pas été trouvée dans le tableau

Remarques

Cette fonction est susceptible d'être plus lente que _ArrayBinarySearch() mais est utile lorsque le tableau ne peut pas être trié avant la recherche.

Les valeurs de $iCompare ne peuvent pas être combinées ensemble.

En relation

_ArrayBinarySearch, _ArrayFindAll

Exemples

Exemple 1

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

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

; Recherche par colonne (en regardant dans la colonne 2)
Local $iIndex = _ArraySearch($aArray, "#32", 0, 0, 0, 0, 1, 2)
MsgBox($MB_SYSTEMMODAL, "Trouvé '#32'", "Colonne 2 sur ligne " & $iIndex)

; Recherche par rangée (en regardant la ligne 3)
$iIndex = _ArraySearch($aArray, "#32", 0, 0, 0, 0, 1, 3, True)
MsgBox($MB_SYSTEMMODAL, "Trouvé '#32'", "Ligne 3 dans colonne " & $iIndex)


Exemple 2

; Utilisation d'un tableau 2D

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

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

_ArrayDisplay($avArray, "$avArray")

Local $sSearch = InputBox("_ArraySearch() demo", "Chaîne à chercher?")
If @error Then Exit

Local $sColumn = InputBox("_ArraySearch() demo", "Colonne à chercher?")
If @error Then Exit
$sColumn = Int($sColumn)

Local $iIndex = _ArraySearch($avArray, $sSearch, 0, 0, 0, 1, 1, $sColumn)
If @error Then
    MsgBox($MB_SYSTEMMODAL, "Pas trouvé", '"' & $sSearch & '" n''a pas été trouvé dans la colonne ' & $sColumn & '.')
Else
    MsgBox($MB_SYSTEMMODAL, "Trouvé", '"'& $sSearch & '" a été trouvé dans le tableau à la position '& $iIndex & 'dans la colonne '& $sColumn & '.')
EndIf