_ArraySearch
Поиск значения в одномерном или двумерном массиве. Аналогично _ArrayBinarySearch(), но в отличии от него не требуется сортировка.
#include <Array.au3>
_ArraySearch(Const ByRef $avArray, $vValue [, $iStart = 0 [, $iEnd = 0 [, $iCase = 0 [, $iCompare = 0 [, $iForward = 1 [, $iSubItem = -1]]]]]])
Параметры
$avArray | Массив для поиска |
$vValue |
Значение для поиска в массиве (по умолчанию полное соответствие содержимому ячейки) |
$iStart |
[необязательный] Индекс массива, от которого начинать поиск |
$iEnd |
[необязательный] Индекс массива, в котором закончить поиск |
$iCase |
[необязательный] Чувствительность к регистру 0 - (по умолчанию) Поиск без учёта регистра 1 - Поиск с учётом регистра |
$iCompare |
[необязательный] 0 - (по умолчанию) Сравнение с приведением к одному типу, например при $iCase = 0 эти значения будут являться совпадением: "строка" = 0, "" = 0 или "0" = 0 1 - Частичное совпадение, искомая строка может быть частью строки содержащейся в ячейке массива (StringInStr) 2 - При сравнении учитывать совпадение типа переменной с помощью VarGetType |
$iForward |
[необязательный] Если установлено в 0, то искать в массиве от конца к началу (а не от начала к концу) |
$iSubItem |
[необязательный] Индекс колонки для поиска в двумерном массиве |
Возвращаемое значение
Успех: | Возвращает первый найденный индекс массива, в котором найдено значение $vValue |
Ошибка: | Возвращает -1, устанавливает @error: |
@error: | 1 - $avArray не является массивом |
2 - Массив $avArray не является одномерным или двумерным массивом | |
4 - $iStart больше $iEnd | |
6 - Значение $vValue не найдено в массиве | |
7 - Размерность массива $avArray более двух | |
(3, 5 - Устаревшие коды ошибок) |
Примечания
Эта функция возможно медленнее _ArrayBinarySearch(), но полезна, когда порядок массива не может быть изменён.См. также
_ArrayBinarySearch, _ArrayFindAllПример
#include <Array.au3>
;===============================================================================
; Пример 1 (использование 1D массива)
;===============================================================================
Local $avArray[6] = [ _
"Строка0, Подстрока0", _
"Строка1, Подстрока1", _
"Строка2, Подстрока2", _
"Строка3, Подстрока3", _
"Строка4, Подстрока4", _
"Строка5, Подстрока5"]
_ArrayDisplay($avArray, "$avArray")
$sSearch = InputBox("Демонстрация _ArraySearch()", "Укажите текст для поиска")
If @error Then Exit
$iIndex = _ArraySearch($avArray, $sSearch, 0, 0, 0, 1)
If @error Then
MsgBox(4096, "Не найдено", '"' & $sSearch & '" не был найден в массиве.')
Else
MsgBox(4096, "Найдено", '"' & $sSearch & '" найден в массиве в позиции ' & $iIndex & ".")
EndIf
;===============================================================================
; Пример 2 (использование 2D массива)
;===============================================================================
Local $avArray[6][2] = [ _
["Строка0", "Подстрока0"], _
["Строка1", "Подстрока1"], _
["Строка2", "Подстрока2"], _
["Строка3", "Подстрока3"], _
["Строка4", "Подстрока4"], _
["Строка5", "Подстрока5"]]
_ArrayDisplay($avArray, "$avArray")
$sSearch = InputBox("Демонстрация _ArraySearch()", "Укажите текст для поиска")
If @error Then Exit
$sColumn = InputBox("Демонстрация _ArraySearch()", "Укажите колонку для поиска")
If @error Then Exit
$sColumn = Int($sColumn)
$iIndex = _ArraySearch($avArray, $sSearch, 0, 0, 0, 1, 1, $sColumn)
If @error Then
MsgBox(4096, "Не найдено", '"' & $sSearch & '" не найдено в колонке ' & $sColumn & '.')
Else
MsgBox(4096, "Найдено", '"' & $sSearch & '" найден в массиве в позиции ' & $iIndex & ' в колонке ' & $sColumn & '.')
EndIf