求一个函数是比较两个数组内容是否相同(支持2维数组)
如题,比如我有两个数组,如果想比较两个数组是否相同(维度,内容比较)该如何写,请高手给条思路. 相同维度、内容是否相同,是这样比较吗? #include <array.au3>Dim $avArray = , $anArray = ["A", "B", "C", "D", "E"]
Compare($avArray, $anArray)
Func Compare($arr1, $arr2)
If IsArray($avArray) And IsArray($anArray) Then
$arr1 = $avArray
$arr2 = $anArray
If UBound($avArray, 0) == UBound($avArray, 0) Then
$num = UBound($avArray, 0)
If UBound($arr1) == UBound($arr2) Then
$comp = StringCompare(_ArrayToString($arr1, ""), _ArrayToString($arr2, ""), 1)
If $comp = 0 Then
MsgBox(0, 0, "两数组相等")
Else
MsgBox(0, 0, "不相等")
EndIf
Else
MsgBox(64, "", "数组数量不同,比较无意义")
EndIf
Else
MsgBox(64, "", "数组维度不同,比较无意义")
EndIf
Else
MsgBox(64, "wring", "不是数组")
EndIf
EndFunc ;==>Compare
用gdi矩阵套过来不知道行不行 回复 3# 3mile
谢谢你的代码,但是好像_ArrayToString这个只是相对一维数组而已吧,对于二维数组可就.... 增加一个判断,If ubound($arr1,0)>1 OR ubound($arr2,0)>1 then msgbox(0,"","多维数组") 回复 6# 3mile
我的代码跟你的有点不同,不知道这样做可不可以,,无论循序怎么样都好像可以判断,就是没有办法想出二维的如下:#include <Array.au3>
Local $array1 = ["3", "1", "2",""]
Local $array2 = ["2", "1", "3"]
MsgBox(0, 0, _ArrayCompare($array1, $array2))
_ArrayDisplay($array1, "")
Func _ArrayCompare(ByRef $array1, ByRef $array2)
;返回值
; 成功:1-两数组相等;2-两数组维数下标不同;3-两数组不等
; 失败返回0并设置@error:2-两个数组维度不同,3-两数组有且有一个不是数组
If IsArray($array1) And IsArray($array1) Then
Local $aArray1 = $array1
Local $aArray2 = $array2
If UBound($aArray1, 0) <> UBound($aArray2, 0) Then
Return SetError(2, 0, 0);如果两个数组的维度不相等
Else ;如果维度相等
If UBound($aArray1, 0) = 1 Then ;如果数组的维度为1,即1维数组
For $i = 0 To UBound($aArray1) - 1
$Sign = _ArraySearch($aArray2, $aArray1[$i])
If Not @error Then
$aArray1[$i] = ""
$aArray2[$Sign] = ""
ElseIf @error = 6 Then ;如果没找到,说明两数组不相等
Return 2
ExitLoop
EndIf
Next
If UBound($aArray1) <> UBound($aArray2) Then
Return 2
Else
If _ArrayToString($aArray1, "") = _ArrayToString($aArray2, "") Then
Return 1
Else
Return 3
EndIf
EndIf
EndIf
EndIf
Else
Return SetError(3, 0, 0);两个数组中存在一个或者两个不是数组
EndIf
EndFunc ;==>_ArrayCompare
页:
[1]