繁体   English   中英

在给定键值的Visual Basic数组中查找值

[英]find value in visual basic array given key value

我正在创建一个页面,该页面显示来自15个不同赞助者的每个页面上的4个赞助者广告。 应根据赞助的价值对广告的展示频率进行加权。 我已经在php中完成了类似的工作,但是似乎无法在ASP中获得它

这就是我要做的事情:1.创建一个赞助商数组,其中一个“列”代表赞助价值2.将赞助价值在数组中求和3.使用总计创建一个权重百分比对于数组中的每个发起人,并将此百分比添加为数组中的其他“列”。4.创建一个新数组,该数组根据其权重复制发起人值

在ASP中,我最终创建了一个3维数组,该数组根据其权重复制了我最初的Sponsors数据数组。 它似乎有效-我可以在遍历100行newSponsors数组时编写该数组的值。

newSponsors(n,x,i)=赞助者(x,i)

然后,我从100个数字中随机分配4个数字,以创建3维数组的键。 我一直在比较它们:

SponsorWeight = Sponsors(5,i)

Dim newSponsors(100,5,15)

for i = 0 to SponsorTotalCt
SponsorWeight = Sponsors(5,i)
for w = 1 to SponsorWeight
    for x = 0 to 5
        newSponsors(n,x,i) = Sponsors(x,i)
        value = Sponsors(x,i)
        response.write("Value = " & value & "<br>")
    next
    n = n + 1
next
x = 0
next

假设我的Randomizer从100中生成4个随机数:17、9、88和27。我需要创建一个if语句:

if newSponsors(17,2,i) = newSponsors(9,2,i)
  pass = false

但我不知道我的价值是多少。 我如何得到它?

嗯,花了一天半的时间,但是我终于想出了这个有效的代码-可能不是最有效的方法,但是它确实起作用:

i = 0
For i = 0 to UBound(Sponsors, 2)
SponsorVal = Sponsors (2,i)
SponsorWeight = Round(SponsorVal/SponsorTotalAmt * 100,0)
Sponsors (5,i) = SponsorWeight

Next

'CREATE NEW ARRAY OF 100 TO RANDOMIZE AND WEIGHT
' n = key in 100 array
' x = key in Sponsors array
' i = row in Sponsors array
' w = weight in Sponsor array

Dim n
Dim x

n = 0
x = 0
i = 0
w = 1
SponsorWeight = Sponsors(5,i)

Dim newSponsors(100,15)

for i = 0 to SponsorTotalCt
SponsorWeight = Sponsors(5,i)
for w = 1 to SponsorWeight
    value = i
    newSponsors(n,0) = value
    response.write(value)
    n = n + 1
next
x = 0
next


' RANDOMIZE A VALUE FROM newSponsors

intHighNumber = n
intLowNumber = 1

pass = "false"

Dim spot(4)

For i = 1 to 4
    Randomize
    spot(i)= Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber)
Next

spot1 = spot(1)
spot2 = spot(2)
spot3 = spot(3)
spot4 = spot(4)

Sponsor1 = newSponsors(spot1,0)
Sponsor2 = newSponsors(spot2,0)
Sponsor3 = newSponsors(spot3,0)
Sponsor4 = newSponsors(spot4,0)

'MAKE SURE THAT THERE ARE NO DUPLICATE SPONSORS IN THE 4 RANDOMLY SELECTED

do 

如果newSponsors(spot1,0)<> newSponsors(spot2,0)AND newSponsors(spot1,0)<> newSponsors(spot3,0)AND newSponsors(spot1,0)<> newSponsors(spot4,0)AND newSponsors(spot2, 0)<> newSponsors(spot3,0)和newSponsors(spot2,0)<> newSponsors(spot4,0)AND newSponsors(spot3,0)<> newSponsors(spot4,0)then pass =“ true” else pass =“ false”对于i = 1到4随机化spot(i)= Int((intHighNumber-intLowNumber + 1)* Rnd + intLowNumber)spot1 = spot(1)spot2 = spot(2)spot3 = spot(3)spot4 = spot( 4)赞助人1 = newSponsors(spot1,0)赞助人2 = newSponsors(spot2,0)赞助人3 = newSponsors(spot3,0)赞助人4 = newSponsors(spot4,0)如果循环直到通过=“ true”,则下一个结束

response.write("Pass: " & pass & "<br>")
Response.write(Sponsor1 & "<br>" & Sponsor2 & "<br>" & Sponsor3 & "<br>" & Sponsor4)

'CALL THE APPROPRIATE VALUE IN THE SPONSORS ARRAY BASED ON THE NEWSPONSORS ARRAY
Response.write("<br><br>" & Sponsors(Sponsor1,4))

希望有人觉得有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM