大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说asp 数组(asp获取数组中对象值),希望您对编程的造诣更进一步.
使用该函数,可以使ASP生成跟PHP一样带键值对的数组。
array2(arr,k,v)
参数:arr 数组名
参数:k 键名key
参数:v 值value
作用:创建/新增/修改数组元素
返回:array2 array2类型的数组
用法:
array2 arr,”key”,”hello would” ‘创建一个名为arr的数组,并且有一个键为”key”、值为”hello would”的元素
array2 arr,0,”hi Alone” ‘修改数组中key为0的元素的值为”hi Alone”
array2 arr,null,”some string” ‘向数组arr中添加一个元素,值”some string”,当键为空/空字符串时,key自动为数组的所有key中最大一个数值+1,否则为0,此处key为0
array2_new(arr)
参数:arr 数组名
作用:初始化一个空的array2数组
返回:array2 array2类型的空数组
用法:
array2_new arr ‘初始化一个名为arr的空数组
new_array2(arr)
作用:同array2_new(),初始化一个空的array2数组
array2_read(arr,k)
参数:arr array2数组
参数:k 键名key
作用:根据key读取数组中对应的值
返回: 数组中key所对应的值
用法:
val = array2_read(arr,”key”) ‘读取数组arr中键为”key”的值
val = arr(“key”) ‘快捷用法
array2_key(arr)
参数:arr ‘array2数组
作用:返回array2数组的所有键
返回:array array2数组的所有键
array2_val(arr)
参数:arr ‘array2数组
作用:返回array2数组的所有值
返回:array array2数组的所有值
array2_key_val(arr,idx,key,val)
参数:arr array2数组
参数:idx 索引
参数:key 存放这个索引的键
参数:val 存放这个索引的值
作用:返回array2数组某个所有的键和值
返回:string array2数组中这个索引的键
用法:
array2_key_val arr,0,k,v ‘获取数组arr中索引为0(第一个)的键值,并分别存放到k、v两个变量中
array2_ubound(arr)
参数:arr array2数组
作用:返回array2数组的下标
返回:numeric 数组下标
用法:
for i = 0 to array2_ubound(arr)
array2_key_val arr,i,k,v
Response.Write k & ” => ” & v &vbnewline
next
array2_is(arr)
参数:arr array2数组
作用:判断是不是array2数组
返回:boole true或false
array2_rs(arr,rs)
参数:arr 数组名
参数:rs ADODB.Recordset集合
作用:将ADODB.Recordset集合转换成array2
返回:array2 array2类型的数组(二维)
用法:
‘set rs = …
if not rs.eof then
array2_rs arr,rs ‘将Recordset集合转换成名为arr的array2数组
end if
…
array2_rs_row(arr,rs)
参数:arr 数组名
参数:rs ADODB.Recordset集合
作用:将ADODB.Recordset集合的第一行转换成array2
返回:array2 array2类型的数组
array2_match(str,pat,arr)
参数:str 要搜索的字符串
参数:pat 正则表达式
参数:arr 数组名
作用:执行一个正则表达式匹配
返回:array2 array2类型的数组
用法:
str = “a=1&b=2”
pat = “\w+=(\w+)”
array2_match str,pat,arr
‘返回的为多维数组,结构大致如下:
arr => (
0 => (
0 => a=1,
1 => 1,
),
1 => (
0 => b=2,
1 => 2,
),
)
array2_match_php(str,pat,arr)
参数:str 要搜索的字符串
参数:pat 正则表达式
参数:arr 数组名
作用:执行一个正则表达式匹配(PHP风格)
返回:array2 array2类型的数组
用法:
str = “a=1&b=2”
pat = “\w+=(\w+)”
array2_match_php str,pat,arr
‘返回的为多维数组,结构大致如下:
arr => (
0 => (
0 => a=1,
1 => b=2,
),
1 => (
0 => 1,
1 => 2,
),
)
array2_json_decode(arr,jss)
参数:arr array2数组
参数:jss json字符串
作用:将json字符串转换成arra2数组
返回:array2 array2类型的数组
用法:
jss = “{a:1,b:2}”
array2_json_decode arr,jss
array2_json_encode(arr)
依赖:aspjson
作用:将arra2数组转换成json字符串
参数:arr array2数组
返回:string json格式的字符串
用法:
json = array2_json_encode(arr)
array2_dump(arr)
参数:arr array2数组
作用:遍历打印array2数组,用于调试
返回:string 遍历结果
用法:Response.Write array2_dump(arr)
函数体:
function array2(arr,byval k,byval v)
dim n
if not array2_is(arr) then new_array2 arr
if isobject(k) then
if lcase(typename(k)) = “field” then k = k.value
end if
if isobject(v) then
if lcase(typename(v)) = “field” then v = v.value
end if
if not arr.Exists(k) then
if inull(k) then
n = array2_max_key(arr)
n = iif(n < 0,0,n + 1)
k = n
end if
arr.Add k,v
else
if isobject(v) then
set arr.Item(k) = v
else
arr.Item(k) = v
end if
end if
set array2 = arr
end function
function array2_new(arr)
new_array2 arr
set array2_new = arr
end function
function new_array2(arr)
set arr = nothing
set arr = CreateObject(“Scripting.Dictionary”)
set new_array2 = arr
end function
function array2_read(arr,k)
if not array2_exists(arr,k) then exit function
if isobject(arr(k)) then
set array2_read = arr(k)
else
array2_read = arr(k)
end if
end function
function array2_key(arr)
if not array2_is(arr) then exit function
array2_key = arr.Keys()
end function
function array2_val(arr)
if not array2_is(arr) then exit function
array2_val = arr.Items()
end function
function array2_key_val(arr,byval idx,key,val)
if not array2_is(arr) then exit function
if not isnumeric(idx) then exit function else idx = int(idx)
key = arr.Keys()(idx)
if isobject(arr.Items()(idx)) then
set val = arr.Items()(idx)
else
val = arr.Items()(idx)
end if
array2_key_val = key
end function
function array2_ubound(arr)
dim n : n = -1
if array2_is(arr) then n = ubound(arr.Keys)
array2_ubound = n
end function
function array2_max(byval arr)
dim i,n,m : n = -1
for i = 0 to ubound(arr)
if isnumeric(arr(i)) then
m = clng(arr(i))
if m > n then n = m
end if
next
array2_max = n
end function
function array2_max_key(byval arr)
array2_max_key = array2_max(arr.Keys)
end function
function array2_max_val(byval arr)
array2_max_val = array2_max(arr.Items)
end function
function array2_exists(byval arr,k)
dim tmp : tmp = false
if array2_is(arr) then
tmp = arr.Exists(k)
end if
array2_exists = tmp
end function
function array2_is(byval arr)
dim tmp : tmp = false
if isobject(arr) then
tmp = true
end if
array2_is = tmp
end function
function array2_is2(byval arr)
On Error Resume Next
Err.Clear
dim tmp : tmp = false
if isobject(arr) then
tmp = arr.Keys
tmp = arr.Items
tmp = Err.number = 0
end if
array2_is = tmp
end function
function array2_clone(byval arr,byref arr2)
if isobject(arr) then
set arr2 = arr
set array2_clone = arr2
else
arr2 = arr
array2_clone = arr2
end if
end function
function array2_rs(arr,rs)
dim i,j,arr2
if not array2_is(arr) then new_array2 arr
if not isobject(rs) then exit function
i = 0
do while not rs.eof
new_array2 arr2
for j = 0 to rs.fields.count – 1
array2 arr2,rs(j).name,rs(j).value
next
array2 arr,i,arr2
rs.movenext
i = i + 1
loop
if not rs.bof then rs.movefirst
set array2_rs = arr
end function
function array2_rs_row(arr,rs)
dim j
if not array2_is(arr) then new_array2 arr
if not isobject(rs) then exit function
if not rs.eof then
for j = 0 to rs.fields.count – 1
array2 arr,rs(j).name,rs(j).value
next
end if
set array2_rs_row = arr
end function
function array2_match(byval str,pat,arr)
if not array2_is(arr) then new_array2 arr
if inull(str) or inull(pat) then exit function
dim reg,mat,m,i,j,arr2
set reg = new RegExp
with reg
.IgnoreCase = true
.Global = true
.Pattern = pat
set mat = .Execute(str)
end with
set reg = nothing
for i = 0 to mat.count – 1
new_array2 arr2
array2 arr2,0,mat(i).value
for j = 0 to mat(i).SubMatches.count – 1
array2 arr2,j + 1,mat(i).SubMatches(j)
next
array2 arr,i,arr2
next
set mat = nothing
set array2_match = arr
end function
function array2_match_php(byval str,pat,arr)
if not array2_is(arr) then new_array2 arr
if inull(str) or inull(pat) then exit function
dim reg,mat,m,i,j,arr2,pmc,smc
set reg = new RegExp
with reg
.IgnoreCase = true
.Global = true
.Pattern = pat
set mat = .Execute(str)
end with
set reg = nothing
pmc = mat.count
if pmc > 0 then
smc = mat(0).SubMatches.count
for i = 0 to pmc – 1
array2 arr2,i,mat(i).value
next
array2 arr,0,arr2
if smc > 0 then
for j = 0 to smc – 1
new_array2 arr2
for i = 0 to pmc – 1
array2 arr2,i,mat(i).SubMatches(j)
next
array2 arr,j + 1,arr2
next
end if
end if
set mat = nothing
set array2_match_php = arr
end function
function array2_json_decode(arr,byval jss)
On Error Resume Next
if inull(jss) then jss = “{}”
set arr = array2_json_decode_js(array2_str2obj(jss))
if Err.number <> 0 then array2_new arr
set array2_json_decode = arr
end function
function array2_json_encode(byval arr)
array2_json_encode = array2_json_encode_obj(arr).jsString
end function
function array2_json_encode_obj(byval arr)
dim json,k
if not array2_is(arr) then exit function
set json = jsObject()
for each k in arr
if array2_is(arr(k)) then
set json(k) = array2_json_encode_obj(arr(k))
elseif isarray(arr(k)) then
json(k) = json.toJSON(arr(k))
else
json(k) = arr(k)
end if
next
set array2_json_encode_obj = json
set json = nothing
end function
function array2_dump(byval arr)
array2_dump = array2_idump(arr,0)
end function
function array2_idump(byval arr,byval s)
dim k,x,str,pre
str = vbnewline
pre = “”
s = iif(isnumeric(s),clng(s),0)
for x = 1 to s
pre = pre & ” “
next
if array2_is(arr) then
for each k in arr
str = str & pre & k & ” => “
if array2_is(arr(k)) then
s = s + 1
str = str & “(” & array2_idump(arr(k),x) & pre & “)”
elseif isarray(arr(k)) then
str = str & “array(” & ubound(arr(k)) & “),”
else
str = str & arr(k) & “,”
end if
str = str & vbnewline
next
end if
array2_idump = str
end function
%>
<script language=”JScript” runat=”Server”>
function array2_json_decode_js(jso)
{
var arr = new_array2(arr);
if(typeof(jso) != ‘object’) return arr;
var isa = jso.constructor == Array;
for(var k in jso)
{
k = isa ? parseInt(k) : k;
arr(k) = typeof(jso[k]) == ‘object’ ? array2_json_decode_js(jso[k]) : jso[k];
}
return arr;
}
function array2_str2obj(str)
{
var jss = str || ‘{}’;
eval(‘var jso = ‘ + jss);
return jso;
}
</script>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/34517.html