A VBScript equivalent of PHP’s array_uintersect_uassoc
Function array_uintersect_uassoc(mAry1,mAry2,data_compare_func,key_compare_func)
Dim key,key_c
Dim found,key_found
Dim output : set output = Server.CreateObject("Scripting.Dictionary")
If isArray(mAry1) Then
For key = 0 to uBound(mAry1)
If isArray(mAry2) Then
For key_c = 0 to uBound(mAry2)
execute("found = " & data_compare_func & "(mAry1(key), mAry2(key_c))")
execute("key_found = " & key_compare_func & "(key, key_c)")
If found = 0 and key_found = 0 Then
If output.Exists(key) Then
output(key) = mAry1(key)
Else
output.Add key, mAry1(key)
End If
End If
Next
ElseIf isObject(mAry2) Then
For Each key_c In mAry2
execute("found = " & data_compare_func & "(mAry1(key), mAry2(key_c))")
execute("key_found = " & key_compare_func & "(key, key_c)")
If found = 0 and key_found = 0 Then
If output.Exists(key) Then
output(key) = mAry1(key)
Else
output.Add key, mAry1(key)
End If
End If
Next
End If
Next
ElseIf isObject(mAry1) Then
For Each key In mAry1
If isArray(mAry2) Then
For key_c = 0 to uBound(mAry2)
execute("found = " & data_compare_func & "(mAry1(key), mAry2(key_c))")
execute("key_found = " & key_compare_func & "(key, key_c)")
If found = 0 and key_found = 0 Then
If output.Exists(key) Then
output(key) = mAry1(key)
Else
output.Add key, mAry1(key)
End If
End If
Next
ElseIf isObject(mAry2) Then
For Each key_c In mAry2
execute("found = " & data_compare_func & "(mAry1(key), mAry2(key_c))")
execute("key_found = " & key_compare_func & "(key, key_c)")
If found = 0 and key_found = 0 Then
If output.Exists(key) Then
output(key) = mAry1(key)
Else
output.Add key, mAry1(key)
End If
End If
Next
End If
Next
End If
set array_uintersect_uassoc = output
End Function
Please also note that php.vbs offers community built functions and goes by the McDonald’s Theory. We’ll put online functions that are far from perfect, in the hopes to spark better contributions. Do you have one? Then please just: