2011-04-19 52 views
0

我剛剛開始學習編碼和PHP,所以我一直在考慮實踐我迄今爲止學到的東西,但我不確定我的編碼效率和效率如何。我會很感激你對下面的循環的評論。這是一個簡單的循環,並且已經註釋了一個簡單的例子。如果我能更好地編寫代碼,我將不勝感激。這是高效循環PHP編碼嗎?

//Initialize page 
    $startpage = isset($_POST['page']) ? $_POST['page'] : 1; 
    $endpage = 11; 

    //Loop through the start and end of the page 
    while($startpage < $endpage) { 

     if(isset($_POST['submit'])) { 
      $startpage=$startpage+1; 
     } 

     if($startpage < $endpage) { 
      break; 
     } 
    } 

    //Alternative option 
    // if(isset($_POST['submit'])) { 

     // if($startpage < $endpage) { 
      // $startpage = $startpage + 1; 
     // }  
    // } 

編輯

我執行$ _ POST檢查的原因是因爲我只希望有從一個頁面將用戶移動到下一個命中後提交。

回答

2

由於你已經編碼了,不,這是非常低效的; p。 技術上可以與

if(isset($_POST['submit']) && $startpage < $endpage){ 
    $startpage = $endpage; 
} 

取代你的代碼,因爲你的邏輯實際上沒有做任何事情,但增加$startpage,直到它等於$endpage。作爲一個珍聞,增加一個你可以做$startpage++;

你的評論//Loop through the start and end of the page也...應該不存在,因爲它沒有任何意義,如果你的評論沒有評論,我真的瞭解IMO的情況。這有點解釋你想做什麼,但我仍然感到困惑:P。

像其他人一樣也在說,你似乎並不真正瞭解while循環是如何工作的,但是如果你可以斷言,否則我把它拿回來:)。

這是我對while循環的解釋。

A while循環重複本身,因爲它旁邊的條件是正確的。 因此,如果您說while($number is less than 11),然後每次增加$數字,則手動輸入$number is less than 11時不需要break;,因爲這是循環自動執行的操作。

+0

感謝您的代碼建議,我同意您給出的示例看起來更清晰。也許我並沒有清楚地看到我正在處理的這個例子。我會再嘗試。 您從第一頁開始,您只能在提交表單後進入第2頁,因此提交$ _POST ['submit']。現在讓我們說你是第1頁,你點擊提交,它執行的代碼 'if(isset($ _ POST ['submit'])){{0} {start} = $ startpage + 1;' 它增加1,執行下一段代碼的收益,即 'if($ startpage <$ endpage){ break; }' – PeanutsMonkey 2011-04-19 03:23:08

+0

接上 現在看到循環只能增加,如果有一個帖子的while循環將永遠循環。由於我想退出到下一頁,即2,並且不保持循環直到11,因爲下一個增量必須是用戶驅動的,即$ _POST,所以該頁在頁面中。如果您註釋掉代碼 'if($ startpage <$ endpage){ break;' } 您會看到它會在您提交表單後永遠循環。 希望我更清楚。 – PeanutsMonkey 2011-04-19 03:23:32

+0

啊哈,這意味着你正在使用'while'循環,當你實際上應該只是一個'if'語句。 'if(isset(post)&& $ startpage <$ endpage)$ startpage ++;'實際上是您所需要的。你似乎沒有任何需要循環的東西,所以你已經構建了一些開始循環的東西,然後一旦執行就終止。你已經設計了一個循環結構中的if語句;)。 – Anther 2011-04-19 03:34:44

0

我不確定你要在這裏做什麼。由於if聲明,該循環僅運行一次。如果你想打印從$startpage的頁碼$endpage,你可以簡單的做到這一點:

$startpage = isset($_POST['page']) ? $_POST['page'] : 1; 
$endpage = 11; 

while($startpage < $endpage) { 
    $startpage=$startpage + 1; 
} 

其實,你爲什麼在這裏檢查$_POST['submit']

+0

對不起,我應該更新我原來的帖子,因爲我應該提到,我試圖從一個頁面移動到另一個頁面,一次只有在該人員提交表單時纔會發生。我不同意它只是運行一次,除非我沒有正確理解loopong計數$ startpage = $ startpage + 1;只發生在帖子發生後,因爲帖子值出現一次,並且始終小於11,它將永遠循環。同樣,我是PHP新手,可能錯過了一些東西。很高興學習新的東西。 – PeanutsMonkey 2011-04-19 02:36:25

1

我不完全確定你想要做什麼,但它看起來像for循環會更具可讀性。

$startpage = isset($_POST['page']) ? $_POST['page'] : 1; 
$endpage = 11; 
for($i=$startpage; $i<$endpage; $i++) 
    { 
    // do something 
    } 

也許是個人喜好,但同時,當您在搜索結果中的排列要循環是比較有用的,或當你想繼續做別的東西之前檢查另一個函數的結果。

  1. 可以重寫$startpage=$startpage+1;$startpage++;
  2. isset($_POST['submit'])會給你每次通過循環運行相同的答案,所以在運行之前的結果作爲變量:

    您的代碼專門評論循環。

+0

謝謝。我寫出整個代碼的唯一原因,即$ startpage = $ startpage + 1是爲了我自己的理解,然後纔開始以簡寫方式編寫代碼。我沒有意識到,雖然在循環數組時更有用。有沒有推薦使用哪個循環的信息? – PeanutsMonkey 2011-04-19 03:26:00

+0

哪個循環最適合工作,是個人喜好和經驗的結合。不過,我強烈建議閱讀[代碼完整](http://www.amazon.co.uk/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?ie=UTF8&qid=1303185033&sr = 8-1)這樣的技巧。 – 2011-04-19 03:51:21

+0

@PananutsMonkey現在用你的代碼你高興嗎? – 2011-04-28 22:51:04