Функция _ArraySearch

         Описание функции


_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