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]]]]]]] )
$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 |
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 |
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.
_ArrayBinarySearch, _ArrayFindAll
#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)
; 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