搜索数组里的子数组某一个值[已解决]
本帖最后由 .Simba 于 2021-5-14 18:38 编辑#include <Array.au3>
Local $aTemp =
Local $arrayA = [['a', 'a'], ['b', 'b'], ['c', $aTemp]]
_ArrayDisplay($arrayA, '$arrayA')
我要怎么用 _ArraySearch() 搜索 $arrayA 里的子数组里的某一个值呢? 比如我要搜索 $aTemp 里的 3 . 帮助文档里没有看明白.
数据格式设计不合理
在你的二维数组中,$aTemp是个对象标记,不是你$aTemp内的值,_ArraySearch() 函数的搜索也只针对字符串。
_ArraySearch() 不能搜索这种元素也为数组的
如果 $aTemp 在 $arrayA 中的位置固定,可以直接 _ArraySearch($aTemp, '3') 搜索
如果位置不确定,那就不要设计这样的组合数组 afan 发表于 2021-5-14 10:26
_ArraySearch() 不能搜索这种元素也为数组的
如果 $aTemp 在 $arrayA 中的位置固定,可以直接 _ArraySearc ...
好的, 看来这种设计不合理, 我本想设计成数组中套数组的. afan 发表于 2021-5-14 10:26
_ArraySearch() 不能搜索这种元素也为数组的
如果 $aTemp 在 $arrayA 中的位置固定,可以直接 _ArraySearc ...
这个问题很久以前我也想过, 但是不知道如何在初始化的时候把数据整理成数组中有数组, 是否要边判断边插入数据.很是麻烦的样子. 不过查找数据当时我只研究二维数组. 下面代码的逻辑有问题, 比如我要查找 $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]
Return 'Null'
EndFunc ;==>__ArraySearch
heroxianf 发表于 2021-5-15 15:14
这个问题很久以前我也想过, 但是不知道如何在初始化的时候把数据整理成数组中有数组, 是否要边判断边插入 ...
谢谢,感觉修改一下就可以达到我的需求了! .Simba 发表于 2021-5-15 15:26
谢谢,感觉修改一下就可以达到我的需求了!
如果你的数据格式有一维和二维, 要加一些判断.
页:
[1]