函数参考


_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 [可选参数] 如果设置为1, 区分大小写
$iCompare [可选参数] 0 AutoIt 变量比较 (默认/default), "string" = 0, "" = 0 or "0" = 0 match
1 如果设置为1, 执行部分搜索 (StringInStr)
2 比较变量是否是相同类型和相同值
$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 (使用一维数组)
;===============================================================================
Local $avArray[6] = [ _
        "String0, SubString0", _
        "String1, SubString1", _
        "String2, SubString2", _
        "String3, SubString3", _
        "String4, SubString4", _
        "String5, SubString5"]

_ArrayDisplay($avArray, "一维数组")

Local $sSearch = InputBox("一维数组搜索演示", "请输入要搜索的值.")
If @error Then Exit

Local $iIndex = _ArraySearch($avArray, $sSearch, 0, 0, 0, 1)
If @error Then
    MsgBox(4096, "没有找到匹配结果", "“" & $sSearch & "”搜索完毕,没有结果可显示。")
Else
    MsgBox(4096, "搜索成功", "“" & $sSearch & "”搜索完毕,位于数组中第“" & $iIndex & "”个索引中。")
EndIf

;===============================================================================
; 示例 2 (使用二维数组)
;===============================================================================
Local $avArray[6][2] = [ _
        ["String0", "SubString0"], _
        ["String1", "SubString1"], _
        ["String2", "SubString2"], _
        ["String3", "SubString3"], _
        ["String4", "SubString4"], _
        ["String5", "SubString5"]]

_ArrayDisplay($avArray, "二维数组")

$sSearch = InputBox("二维数组搜索演示", "请输入要搜索的值。")
If @error Then Exit

Local $sColumn = InputBox("二维数组搜索演示", "请输入搜索的方向:" & @CRLF & "从开始到结束进行搜索输入“1”" & @CRLF & "从结束到开始进行搜索输入“0”")
If @error Then Exit
$sColumn = Int($sColumn)

$iIndex = _ArraySearch($avArray, $sSearch, 0, 0, 0, 1, 1, $sColumn)
If @error Then
    MsgBox(4096, "没有找到匹配结果", "“" & $sSearch & "”搜索完毕,没有结果可显示。")
Else
    MsgBox(4096, "搜索成功", "“" & $sSearch & "”搜索完毕,位于数组中第“" & $iIndex & "”个索引中。")
EndIf