循环的一个问题,在线等!

cy527300280 2009-02-19 06:00:03
id=request.QueryString("id")
if instr(session("goods"),id)=0 then
session("goods")=session("goods")&id&","&"1,"
else
goodsArr=split(session("goods"),",")
for i=0 to ubound(goodsArr)-1
if goodsArr(i)=id then
exit for
end if
next

goodsArr(i+1)=goodsArr(i+1)+1
session("goods")=join(goodsArr,",")
end if
response.Write(session("goods"))

请问这里如果i=0 goodsArr(i)=id了那么它跳出循环,如果i=1那么会怎么办?
...全文
89 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cy527300280 2009-02-19
  • 打赏
  • 举报
回复
有点明白了,谢谢你啊
lxf2000104 2009-02-19
  • 打赏
  • 举报
回复
Session 对象
可以使用 Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。

Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。有关使用 Session 对象的详细信息,请参阅“ASP 应用程序”部分的“管理会话”。

注意 会话状态仅在支持 cookie 的浏览器中保留。
lxf2000104 2009-02-19
  • 打赏
  • 举报
回复
session("goods")是应用会话存储的一个变量,跨页面储存的。在其他页面就赋值了的。
只要session("goods")不为null就不会有问题,如果为null,页面就会报错。报session过期的错误。
你搜索session的相关知识。
cy527300280 2009-02-19
  • 打赏
  • 举报
回复
那刚开始如果没有下面的session("goods")赋值,
刚开始这里的session("goods")代表什么?
lxf2000104 2009-02-19
  • 打赏
  • 举报
回复
代码你没有读懂啊。
if goodsArr(i)=id then
表示找到商品编号(a,b,c)的位置,然后返回该商品的位置。跳出循环,i的值就是当前商品的位置
exit for
end if
就跳出for循环,
a,1,b,1,c,1 如果是这样的话,i就不会是1了。只能有偶数。
也就是说a,b,c的位置。
cy527300280 2009-02-19
  • 打赏
  • 举报
回复
这个思路我不知道是怎么想的,如果没有下面的session("goods")赋值,
刚开始这里的session("goods")代表什么?
还有如果i=0,则跳出循环,执行
goodsArr(i+1)=goodsArr(i+1)+1
session("goods")=join(goodsArr,",")
end if
response.Write(session("goods"))
%>
那么如果i=1那么还是执行后面的那个吗,如果是这样
goodsArr(i+1)就等于goodsArr(2)=2+1
a,1,b,1,c,1
goodsArr(2)就等与b了?
lxf2000104 2009-02-19
  • 打赏
  • 举报
回复
你说出购物车大伙就明白意图了。否则。。。。。
lxf2000104 2009-02-19
  • 打赏
  • 举报
回复
''a,1,b,1,c,1,d,1,
'
'id=request.QueryString("id")
'if instr(session("goods"),id)=0 then
' session("goods")=session("goods")&id&","&"1,"
'else
' goodsArr=split(session("goods"),",")
' for i=0 to ubound(goodsArr)-1
' if goodsArr(i)=id then
' exit for
' end if
' next
' goodsArr(i+1)=goodsArr(i+1)+1
' session("goods")=join(goodsArr,",")
'end if
'response.Write(session("goods"))
%>

<div id="main">
<div id="a">
<%
'a,1,b,1, c,1,a,1 z1=a z2=1 z3=b a1b1c1

这些代码已经注释掉了。
有用的代码你也贴出来了。
你的老师是吧商品放到购物车中,
if instr(session("goods"),id)=0 then
session("goods")=session("goods")&id&","&"1,"
意思是说,购物车中如果没有这个商品,就把商品放入购物车,
最后以逗号结尾,方便下次放入商品。
else
如果有商品,找到商品的位置,然后商品后商品数量+1.
cy527300280 2009-02-19
  • 打赏
  • 举报
回复
这个例子是做购物车的,我们老师写的,我看的不太懂,我把代码全贴出来,大家看看
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
#a{
background:#CCCCCC
}
#b{
background:#FFFFCC
}
</style>
</head>

<body>
<%
''a,1,b,1,c,1,d,1,
'
'id=request.QueryString("id")
'if instr(session("goods"),id)=0 then
' session("goods")=session("goods")&id&","&"1,"
'else
' goodsArr=split(session("goods"),",")
' for i=0 to ubound(goodsArr)-1
' if goodsArr(i)=id then
' exit for
' end if
' next
' goodsArr(i+1)=goodsArr(i+1)+1
' session("goods")=join(goodsArr,",")
'end if
'response.Write(session("goods"))
%>

<div id="main">
<div id="a">
<%
'a,1,b,1, c,1,a,1 z1=a z2=1 z3=b a1b1c1
id=request.QueryString("id")
if instr(session("goods"),id)=0 then
session("goods")=session("goods")&id&","&"1,"
else
goodsArr=split(session("goods"),",")
for i=0 to ubound(goodsArr)-1
if goodsArr(i)=id then
exit for
end if
next

goodsArr(i+1)=goodsArr(i+1)+1
session("goods")=join(goodsArr,",")
end if
response.Write(session("goods"))
%>
</div>
</div>
<br />
<a href="index.asp">[返回]</a>
</body>
</html>
lxf2000104 2009-02-19
  • 打赏
  • 举报
回复
现在我还没有明白楼主的最终目的,最开始的时候session("goods")存的是什么值,LZ的目的是要加保护防止数组越界报错么?
lxf2000104 2009-02-19
  • 打赏
  • 举报
回复
如果 session("goods")=session("goods")&id&","&"1,"
在赋值之前session("goods")如果有值,且最后的字符不是",",分割后id不在goodsArr数组中,则if goodsArr(i)=id then 就不会为true,i返回的是goodsArr的上限,goodsArr(i+1)就会越界。
否则,
无论i是多少,当找到id在数组中的位置的时候,紧接着后的值goodsArr(i+1)就是1.
cy527300280 2009-02-19
  • 打赏
  • 举报
回复
如果i=1
那么是不是执行
goodsArr(i+1)=goodsArr(i+1)+1
session("goods")=join(goodsArr,",")
这个?还是不止行?
cyqlightrain 2009-02-19
  • 打赏
  • 举报
回复
i=1就不会再进入循环了.
lxf2000104 2009-02-19
  • 打赏
  • 举报
回复
for i=0 to ubound(goodsArr)-1
if goodsArr(i)=id then
exit for
end if
next
是获取ID,在goodsArr中的位置,也就是i的值。
cy527300280 2009-02-19
  • 打赏
  • 举报
回复
那是我们老师写的,例如a,1,b,1,c,1如果再出现a,1那么就变成a,2就是加1
lzp4881 2009-02-19
  • 打赏
  • 举报
回复
要求不明确,算法有问题。
ncyellow 2009-02-19
  • 打赏
  • 举报
回复
你的循环体里 什么都没做... 汗

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧