这个问题很久以前我也想过, 但是不知道如何在初始化的时候把数据整理成数组中有数组, 是否要边判断边插入数据.很是麻烦的样子. 不过查找数据当时我只研究二维数组. 下面代码的逻辑有问题, 比如我要查找 $aTempD 中的 b 键值中的 data 值,本应该返回 $aTempA 这个数组, 结果却返回 $aTempA 中 data 键的值: GoodTime
#include <Array.au3>
Local $aTempA = [['name', '$aTempA'], ['data', 'GoodTime']]
Local $aTempB = [['name', '$aTempB'], ['data', $aTempA]]
Local $aTempC = [['name', '$aTempC'], ['data', $aTempB]]
Local $aTempD = [['a', 'av'], ['b', $aTempB], ['c', $aTempC]]
_Example()
Func _Example()
Local $s = _Time_ArraySearch($aTempD, 'b.data.name') ; c.data.name 这是当时设计读取的格式
MsgBox(0, '', $s)
Local $ss = _Time_ArraySearch($aTempB, 'data.name')
MsgBox(0, '', $ss)
EndFunc ;==>_Example
Func _Time_ArraySearch($array, $s)
Local $Temp
Local $aData = $array
Local $sData = $s
Local $aTemp = StringSplit($sData, '.', 2)
If @error Then
$Temp = __ArraySearch($aData, $sData)
Else
For $i = 0 To UBound($aTemp) - 1
$aData = __ArraySearch($aData, $aTemp[$i])
If IsArray($aData) Then
$Temp = __ArraySearch($aData, $aTemp[$i])
Else
$Temp = $aData
EndIf
Next
EndIf
Return $Temp
EndFunc ;==>_Time_ArraySearch
Func __ArraySearch($array, $s) ;这里可以再添加一个参数, 用来设置返回第几列的值
$x = _ArraySearch($array, $s)
If Not @error Then Return $array[$x][1]
Return 'Null'
EndFunc ;==>__ArraySearch
|