2011-04-19 64 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