asp 数组(asp获取数组中对象值)

asp 数组(asp获取数组中对象值)

asp 数组(asp获取数组中对象值)

Function

使用该函数,可以使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)

函数体:

asp 数组(asp获取数组中对象值)

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)

asp 数组(asp获取数组中对象值)

{

var jss = str || ‘{}’;

eval(‘var jso = ‘ + jss);

return jso;

}

</script>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/34517.html

(0)
上一篇 2023-08-28 15:43
下一篇 2023-08-28 15:58

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注