作者ioioiii (io)
看板PHP
标题Re: [请益] 一个回圈的问题
时间Wed Sep 1 14:40:55 2010
※ 引述《clubflymf (出张嘴写程式也不容易的)》之铭言:
: 请问您有先将$b1印出来看过资料吗?
有 我有印出来 $b1[0]是1 $b1[1]印不出来
: 资料库抓取多笔资料的回圈是这样子写吗?
: 基本教学大多会是
: while($b1 = mysql_fetch_array($a1)){
: //do something you want
: }
: 这种型式....
: 另外您的回圈是无穷回圈,
: 不知道您有没有发现?
: 因为$b1 = mysql_fetch_array($al);
: 会取得第一笔资料 => $b1 = 1
: 因此 $b1 != null 是永远成立的。
应该不会是无穷回圈吧 我在回圈的最後一行不是有让程式继续取得下一笔资料吗
根据我SQL语法设定的条件 如果只能取到两笔资料 回圈跑完两次就停了不是吗
: 此外您的程式变数命名建议换成有意义的命名,
: 往後看程式比较不会那麽辛苦。
这是一直存在的坏习惯 我想可能写的程式还不够大支吧
一直没尝到苦果 还是谢谢你给的建议
: 题外话...
: 既然您使用了$i当计数器,
: 那算平均就不需要抓资料笔数,
: 除以 ($i+1) 就可以了。
: 还有debug的基本功就是印出变数来检查且耐心的慢慢找,
: 希望对您有帮助。
: <?php
: $sql_query = " select `level`
: from `vata2`
: where `save` = '1' and
: `id` = '1' and
: `level` != '0' ";// sql语法
: $rs = mysql_query($sql_query);// 查询资料
: $i = 0;// 计数器
: $sum = 0;// 总合
: $avg = 0;// 平均
: while($data = mysql_fetch_array($rs)){ // 抓取资料
: $sum += $data[$i];
: $i++;
: }
: $avg = ($sum/($i+1));// 平均
: ?>
嗯嗯 没错 有用到$i的话 我的确多此一举@@
: ※ 引述《ioioiii (io)》之铭言:
: : 小弟从资料库里拉出来的资料有两笔分别是1和2两个整数 也就是说$d1=2
: : 以下是我的code
: : <? $a1=mysql_query("SELECT level FROM vata2 WHERE save='1' and id='1' and
: : level!='0'");
: : $b1=mysql_fetch_array($a1);
: : $g=0; $i=0;
: : $d1=mysql_num_rows($a1);
: : while($b1!=NULL){
: : $g+=$b1[$i];
: : $i++;
: : $b1=mysql_fetch_array($a1);}
: : echo $g;
: : 我的想法是取得资料有两笔所以在回圈跑两次 则第一次$g=1第二次$g=1+2=3
: : 可是我echo出来$g却是1
: : 第一我不明白我的问题出在哪里
: : 第二如果要达成我的目的应该要怎麽改
: : 麻烦善心人士高手们解答 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.215.86
1F:推 clubflymf:印出资料请用VAR_DUMP 或 PRINT_R 09/01 15:03
2F:→ clubflymf:另外 您的写法并不会让 程式继续取得下一笔资料 09/01 15:03
3F:→ clubflymf:还有 您新改的程式 跑出来的结果会是0 09/01 15:04
4F:→ clubflymf:以上是我帮您测试出来的结果 @@ 09/01 15:05
5F:→ clubflymf:我打错字了 = = 真糟糕 = = 结果有出1.5 L打成1 = = 09/01 15:11
6F:→ ioioiii:@@ XDDDDD 09/01 15:13
7F:→ ioioiii:谢谢你喔!!! 09/01 15:17
8F:推 newyellow:while( $b1 = mysql_fetch_array($a1) ) 才正确 09/01 16:12
9F:→ newyellow:数字有成功的话...应该是巧合吧 09/01 16:12
10F:→ ioioiii:我不会从以前到现在都是巧合吧 09/01 18:35
11F:推 lausai:原PO的回圈没问题吧 顶多没那麽乾净 另外mysql_fetch_array 09/01 22:26
12F:→ lausai:遇到资料取完时回传的是false 不是null 09/01 22:28
13F:推 newyellow:抱歉,我看错了 fetch_array有写在回圈里,是OK的 09/02 14:49
14F:→ ioioiii:你们一度害我好疑惑 XDDDDD 09/02 23:48