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

코딩 한 내용을 사용하면 안됩니다. 매우 비효율적입니다. 논리가 실제로 $endpage 동일 할 때까지 $startpage 증가 제외한 아무것도되지 않기 때문에 당신이 기술적으로

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

와 코드를 대체 할 수 있습니다. 당신이 할 수있는 하나씩 증가하는 재미있는 음식으로 $startpage++;

귀하의 의견 //Loop through the start and end of the page 또한 ... 의미가 없기 때문에 거기에 있으면 안됩니다. 귀하의 의견에 ' IMO에서 무슨 일이 벌어지고 있는지 감각을 갖출 수 있습니다. 그것은 당신이하려고하는 것을 설명하는 종류의 것이지만 여전히 혼란 스럽습니다 : P.

다른 사람들도 마찬가지입니다. while 루프가 작동하는 방식을 실제로 이해하지 못하는 것 같지만 달리 주장 할 수 있다면 :).

여기 내 설명은 while 루프입니다.

while 루프는 사용자가 옆에 두는 조건을 그대로 유지하므로 자주 반복됩니다. while($number is less than 11)라고 말한 다음 매번 $ number를 1 씩 증가 시키면 $number is less than 11을 수동으로 루프 할 때 루프에서 break;을 필요로하지 않습니다. 루프가 자동으로 수행되기 때문입니다.

+0

코드 제안을 보내 주셔서 감사 드리며 내가 제시 한 예가 확실히 깨끗해 보인 것에 동의합니다. 어쩌면 제가 작업하고있는 예를 통해 명확하게 나오지 않았을 수도 있습니다. 다시 시도 할게. 페이지 1에서 시작하여 양식을 제출 한 후 2 페이지로 진행할 수 있으므로 $ _POST [ 'submit']하십시오. 이제 당신이 페이지 1이고 제출을 명중하면 코드를 실행합니다. if (isset ($ _ POST [ 'submit'])) { $ startpage = $ startpage + 1; 1 씩 증가합니다. 코드의 다음 부분을 실행하는 진행 예 : 'if ($ startpage <$ endpage) { break; } ' – PeanutsMonkey

+0

위로부터 계속 while 루프가 포스트가 있으면 루프가 증가 할 수 있다는 것을 보았습니다. while 루프는 계속 반복됩니다. 다음 증분이 사용자 주도형 (예 : $ _POST)이어야하기 때문에 다음 페이지 (예 : 2)로 나가서 11까지 루핑을 유지하지 않으려 고하기 때문에 페이지에 휴식이 있습니다. 코드를 주석으로 처리 한 경우 if ($ startpage <$ endpage) { 휴식; } 양식을 제출 한 후 영구적으로 반복되는 것을 확인할 수 있습니다. 잘하면 나는 분명했다. – PeanutsMonkey

+0

아아, 사실은 단지'if' 문이어야 할 때'while' 루프를 사용한다는 것을 의미합니다. 'if (isset (post) && $ startpage <$ endpage) $ startpage ++;'는 실제로 필요한 것입니다. 루프 할 필요가있는 것 같지 않으므로 루프를 시작한 다음 실행하자 마자 종료됩니다. 루프 구조에서 if 문을 고안했습니다.). – Anther

0

여기서 무엇을하려고하는지 잘 모르겠습니다. 이 루프는 if 문 때문에 한 번만 실행됩니다. 당신이 $endpage$startpage에서 페이지 번호를 인쇄하려는 경우, 당신은이 작업을 간단하게 수행 할 수 있습니다

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

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

, 당신은 왜 여기 $_POST['submit']을 확인하고 있습니다?

+0

죄송합니다. 양식을 제출 한 후에 한 번에 한 페이지에서 다음 페이지로 이동하려고한다는 사실을 언급 했으므로 원래 게시물을 업데이트해야합니다. 나는 loopong이 count = startpage = $ startpage + 1을 올바르게 인식하지 못한다면 한번 실행하는 것에 동의하지 않는다. 게시물이 발생하고 게시물 값이 한 번 발생하고 항상 11보다 작을 때만 발생합니다.이 이벤트는 계속 반복됩니다. 다시 말하지만, 저는 PHP를 처음 접했고 뭔가를 놓친 것 같습니다. 행복하게 새로운 것을 배웁니다. – PeanutsMonkey

1

나는 당신이하려고하는 것이 확실하지 않지만, for 루프가 더 읽기 쉽다고 생각합니다.

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

아마도 그것은 개인적인 취향,하지만 당신은 결과의 배열을 통해 루프 할 때 동안 더 유용, 또는 뭔가 다른 일을하기 전에 다른 함수의 결과를 계속 확인하고자 할 때.

  1. 당신은
  2. isset($_POST['submit'])는 당신에게 루프를 통해 실행할 때마다에 같은 대답을 줄 것이다 $startpage=$startpage+1;$startpage++;로 재 작성, 그래서 당신이 프로그램을 실행하기 전에 변수로 결과를 설정할 수 있습니다 특별히 코드에

    댓글 고리.

+0

감사합니다. 전체 코드를 작성하는 유일한 이유는 즉, $ startpage = $ startpage + 1은 속기로 코드를 작성하기 전에 내 자신의 이해를위한 것입니다. 배열을 반복 할 때 while이 더 유용하다는 것을 알지 못했습니다. 어떤 루프를 사용할 것을 권장하는 정보가 있습니까? – PeanutsMonkey

+0

어떤 루프가 가장 잘 작동하는지는 개인적인 취향과 경험의 조합입니다. 그러나 나는 [Code Complete] (http://www.amazon.co.uk/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?ie=UTF8&qid=1303185033&sr)와 같은 것을 읽기를 강력히 권합니다. = 8-1). –

+0

@PeanutsMonkey 지금 코드에 만족합니까? –