[請益] 新手PHP 請教迴圈問題

看板PHP作者 (聖巫拉斐爾)時間10年前 (2015/11/30 22:28), 10年前編輯推噓6(6019)
留言25則, 6人參與, 最新討論串1/1
最近在學習PHP 之前是用DW 可是進入業界後發現用DW..... 所以現在用了sublime之後 就好像看到另一個世界....(重點錯 回正題 知道板上高手眾多 這個問題卡了我好幾天 現在在練習寫購物網站 我想要重複某一段html來達到輪播效果(撈資料庫) 可是一直無法成功顯示 //陣列資料 <?php $array = array( "第一個値" , "第二個値" , "第三個値" , "第四個値" , "第五個値" , "第六個値" , "第七個値" , "第八個值" , "第九個値" , "第十個値" , "第十一個値" , "第十二個值"); ?> <table> <?php $j=0; do { $j++?> <tr> <?php for ($i=0; $i < 4 ; $i++) { ?> <td><?php echo $array[$i]; ?></td> <?php } ?> </tr> <?php } while($j<3) ?> </table> //輸出結果 第一個値 第二個値 第三個値 第四個値 第一個値 第二個値 第三個値 第四個値 第一個値 第二個値 第三個値 第四個値 第一個値 第二個値 第三個値 第四個値 上方的不是我想要的結果 我想要的是 第一個值 第二個值 第三個值 第四個值 第五個值 第六個值 第七個值 第八個值 第九個值 第十個值 第十一個值 第十二個值 就是資料可以一直往下跑 有一點像DW的重複區域 試過很多方法 像是continue 或是do裡面包if 可是越寫錯更大... 有爬過版上的文章 好像和我的問題都不太一樣 希望有大大可以幫我解答 或給一點方向 要鞭請鞭小力一點>< 如此篇有違反版規我自刪文 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.7.105 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1448893703.A.F58.html ※ 編輯: sagenegi (114.43.7.105), 11/30/2015 22:30:17 ※ 編輯: sagenegi (114.43.7.105), 11/30/2015 22:31:23

11/30 22:41, , 1F
我猜是 <td><?php echo $array[$i+$j*4]; ?></td> 嗎?
11/30 22:41, 1F
回C大 好像不是耶 會從第五個值開始跑 然後就錯誤了 ※ 編輯: sagenegi (114.43.7.105), 11/30/2015 22:47:07

11/30 22:47, , 2F
迴圈有問題所以資料不能完全叫出來
11/30 22:47, 2F

11/30 22:49, , 3F
echo 的部分 <tr>...</tr> 這段應該要包含在內迴圈
11/30 22:49, 3F

11/30 22:59, , 4F
http://ideone.com/sovzNS 我好像講錯了 寫出來比較快
11/30 22:59, 4F

11/30 23:00, , 5F
我中文表達能力差 你自己看原始碼研究一下 qq
11/30 23:00, 5F

11/30 23:03, , 6F
http://goo.gl/3zlj65 迴圈可以這樣包
11/30 23:03, 6F

11/30 23:03, , 7F
因為你的 $j 一開始是0 但是第一個 Do 馬上 $j++ 所以
11/30 23:03, 7F

11/30 23:04, , 8F
$j 會從 1 開始 第一個就變成從 $i + $j*4 = 5
11/30 23:04, 8F

11/30 23:05, , 9F
會錯誤我猜是 迴圈跑到後來超過索引?
11/30 23:05, 9F

11/30 23:06, , 10F
如果只是要能動 , 不要求程式碼的效能 一開始 $j= -1
11/30 23:06, 10F

11/30 23:06, , 11F
也許就解決了
11/30 23:06, 11F
感謝樓上幾位大大的解說 好像知道問題在哪了 我再試試看 謝謝大家 ※ 編輯: sagenegi (114.43.7.105), 11/30/2015 23:17:38

12/01 00:11, , 12F
for (j = 0; j < 3; j++)
12/01 00:11, 12F

12/01 00:11, , 13F
for (i = 0; i < 4; i++)
12/01 00:11, 13F

12/01 00:12, , 14F
print(array[j * 4 + i]);
12/01 00:12, 14F

12/01 00:13, , 15F
不好意思我寫C比較順XD
12/01 00:13, 15F
感謝C大和I大還有樓上的T大(雖然我不會C) 原來還有這麼多種寫法 ※ 編輯: sagenegi (114.43.7.105), 12/01/2015 01:05:29 ※ 編輯: sagenegi (114.43.7.105), 12/01/2015 01:06:10

12/02 11:07, , 16F
用二維陣列會不會比較好寫?
12/02 11:07, 16F

12/02 12:24, , 17F
for($j=0;$j<count($array);$j+=4)
12/02 12:24, 17F

12/02 12:25, , 18F
for($i=$j;$i<$j+4;$i++)
12/02 12:25, 18F

12/02 12:27, , 19F
吃飯先@@晚點再貼另一種
12/02 12:27, 19F

12/02 14:04, , 20F
$val=reset($array);
12/02 14:04, 20F

12/02 14:05, , 21F
while($val!==FALSE){
12/02 14:05, 21F

12/02 14:05, , 22F
echo '<tr>';
12/02 14:05, 22F

12/02 14:06, , 23F
for($i=0;$i<4;$i++){
12/02 14:06, 23F

12/02 14:07, , 24F
echo '<td>'.($val!==FALSE?$val:'$nbsp;').'</td>';
12/02 14:07, 24F

12/02 14:08, , 25F
if($val!==FALSE)$val=next($array);
12/02 14:08, 25F
感謝X大大的回應 怎麼感覺好多迴圈 我後來有用wotupset大大的方法 比較像是我要的 不過還是感謝大家熱情的回應 至於H大提到二維陣列 我目前是用PDO撈資料的 撈出來的資料貌似就是二維陣列了? ※ 編輯: sagenegi (118.161.79.21), 12/02/2015 21:04:50
文章代碼(AID): #1MN5q7zO (PHP)
文章代碼(AID): #1MN5q7zO (PHP)