湖南景煌網絡科技有限公司
全球做網站,全球建網站,全球做網站 全球做網站,全球建網站,全球做網站
深思 PHP 数组遍历的差异(array_diff 的实现)-湖南景煌網絡科技有限公司

深思 PHP 数组遍历的差异(array_diff 的实现)

2021年05月30日 湖南景煌網絡科技有限公司 hk.0731jianzhan.com
前两天看到有人要编个考试系统,当时只是简单回了下用随机函数RND

实际一般需要从数据库中随机提取N道题目。

以下代码都基于VBS;

通常的编写类似这样的

"产生不重复随机数
function rndarray(istart,iend,sum)
dim arrayid(),i,j,blnre,temp,iloop,eloop
redim arrayid(sum-1)
i=0
iloop=0
eloop=0
blnre=false
randomize
do while i<sum
temp=int(rnd*(iend-istart+1)+istart)
if i=0 then
arrayid(0)=temp
i=i+1
iloop=iloop+1
else

for j=0 to i-1
if arrayid(j)=temp then
blnre=true
iloop=iloop+1
exit for"这一句很重要,防止多余的循环
else
iloop=iloop+1
end if
next

 if blnre=false then
 arrayid(i)=temp
 i=i+1
 else
 blnre=false
 end if

end if
eloop=eloop+iloop
iloop=0
loop
rndarray=join(arrayid)&"循环次数:"&eloop
end function

response.write rndarray(1,10,5)&"<br>""调用过程


PS。其中的iloop、eloop是为了计算循环次数而已。

以上,大多数人的都是用这种方法编写的,生成一个随机数,然后再和以前生成的做比较,判断是否可用;

但这不是一种AI的,或者说有效率的方法,为什么不用两个数组呢?

数组1,存放需要的字符串,或数字等,数组2存放生成的随机数;当每次随机生成中间变量temp的一个下标x,赋给数组2,然后从数组1中,去掉下标为x的数字,赋给中间变量temp;这样每生成一个随机数,就从数组1中拿掉这个数,下次再生成一个数就不会重复了,这种产生随机数的方法原理实际是从数组1中提取。

方法二

function rndstr(istart,iend,isum)
dim i,j,vntarray()
redim vntarray(iend-istart)
j=istart
for i=0 to iend-istart
vntarray(i)=j
j=j+1
next

dim vntarray2(),temp,x,y
redim vntarray2(isum-1)
y=iend-istart+1
x=0
temp=vntarray
do while x<isum
dim a
randomize
vntarray2(x)=temp(int(rnd*y))
a=" "&vntarray2(x)&" "
temp=split(trim(replace(chr(32)&join(temp)&chr(32),a," ")))
x=x+1
y=y-1
loop
rndstr=join(vntarray2)
end function

response.write rndstr(1,5,2)


这样,是不是更简单呢

展开一下,假如要生成随机字符串,包含字母数字时,仅需为数组1赋值时,用函数chr(num);

假设,需要做一个手机中奖的页面程序。

首先把值赋给数组1,可以130....~139....循环赋值,当然实际使用时从数据库中把已有的赋值,然后再随机提取赋给数组2;

最后,再修饰一下

temp=replace(join(array2),chr(32),"")
phone=left(temp,6)&"***"&right(temp,2)

得到类似137648***58的结果,呵呵

写那么多,累死了~~

上一篇:Ajax内部交流文档
下一篇:新闻内页-JS分页

聲明:本頁內容由湖南景煌網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶參考;本站不擁有所有權,也不承認相關法律責任。如您認為本網頁中有涉嫌抄寫的內容,請及時與我們聯繫進行舉報,並提供相關證據,工作人員會在5個工作日內聯繫您,一經查實,本站將立刻刪除涉嫌侵權內容。如果您對全球網站優化核心技術文章感興趣,請點擊查看全球網站建設全球網站推廣的相關文章,請關注湖南景煌網絡科技有限公司官網(www.0731jianzhan.com)

相關資訊 Relevant news
服務推薦 Hot sale ltem
  1. 我們的承諾
  2. 我們的實力
  3. 我們的未來
全球服務熱線

0731-82272030

週一至週五 09:00~18:00

公司地址:長沙市雨花區韶山北路460號(原86號)興威名座北棟1202室

湖南景煌網絡科技有限公司專注於企業網站建設、跨境獨立站開發、定制化小程序及全棧系統架構。

我們致力於為全球客戶提供高性能的數字化平台,並提供全方位的技術支持、系統維護與安全升級服務,保障您的業務穩定運行。

微信公眾號

微信公眾號

需求
提交

提交業務需求

×