Это эффективное циклическое кодирование PHP? - PullRequest
0 голосов
/ 19 апреля 2011

Я только начал изучать кодирование и 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;
        // }    
    // }

EDIT

Причина, по которой я выполняю проверку $ _POST, заключается в том, что я хочу, чтобы пользователь только переходил с одной страницы на следующую после подтверждения нажатия.

Ответы [ 3 ]

2 голосов
/ 19 апреля 2011

С тем, что вы кодировали, нет, это ужасно неэффективно; с. технически вы можете заменить свой код на

if(isset($_POST['submit']) && $startpage < $endpage){
    $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), а затем увеличиваете число $ на единицу каждый раз, вам не нужно break; из цикла при $number is less than 11 вручную, поскольку это то, что автоматически делает цикл.

1 голос
/ 19 апреля 2011

Я не совсем уверен, что вы пытаетесь сделать, но похоже, что цикл 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 голосов
/ 19 апреля 2011

Я не уверен, что вы пытаетесь сделать здесь. Этот цикл будет выполняться только один раз из-за оператора if. Если вы пытаетесь напечатать номера страниц от $startpage до $endpage, вы можете просто сделать это:

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

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

На самом деле, почему вы проверяете $_POST['submit'] здесь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...