Настройка точек URL - PullRequest
       10

Настройка точек URL

0 голосов
/ 15 января 2012

Код должен позволить это создать переменную $Dots Если URL был, например:http://example.com/1/2В результате 1 и $Dots будут содержать ../, что позволяет легко отображать все ссылки / фотографии.Если бы это привело к 2, то вернулось бы ../../ и так далее.Тем не менее, он просто бесконечно зацикливается.

<?php
        //Set up URL Dots. Fixes directory issues.
    $ORIGINAL_DOTS = str_ireplace('/test_link','',$_SERVER['REQUEST_URI']);
    $COUNT_DOTS = substr_count($ORIGINAL_DOTS,'/')-1;
    $END_DOTS = 0;
    $Dots = '';
    echo $COUNT_DOTS;
    if($COUNT_DOTS != 0){
        while ($END_DOTS <= $COUNT_DOTS){
            if($END_DOTS != $COUNT_DOTS){
                $END_DOTS ++;
                $Dots .= '../';
            }
        }
    }
?>

Ответы [ 3 ]

2 голосов
/ 15 января 2012

Да, ваш цикл будет работать вечно.

while ($END_DOTS <= $COUNT_DOTS){
  if($END_DOTS != $COUNT_DOTS){
    $END_DOTS ++;
    $Dots .= '../';
  }
}

Рассмотрим, что произойдет, когда $END_DOTS == $COUNT_DOTS. Блок if внутри цикла не будет выполняться, поэтому условие $END_DOTS <= $COUNT_DOTS останется истинным, следовательно, цикл будет работать вечно.

Вместо этого вы должны использовать

while ($END_DOTS < $COUNT_DOTS){
  $END_DOTS ++;
  $Dots .= '../';
}
1 голос
/ 15 января 2012

Гораздо проще написать как

$ORIGINAL_DOTS = str_ireplace('/test_link', '', 'http://example.com/1/2');
$COUNT_DOTS = substr_count($ORIGINAL_DOTS, '/')-2;
$Dots = str_repeat('../', $COUNT_DOTS);
1 голос
/ 15 января 2012
while ($END_DOTS <= $COUNT_DOTS){
      if($END_DOTS != $COUNT_DOTS){
           $END_DOTS ++;
           $Dots .= '../';

Оператор if выполняется, только если $ END_DOTS не равно $ COUNT_DOTS. Если они равны, то ваш механизм выхода из цикла while не будет работать. Однако условие в цикле while является истинным, если $ END_DOTS == $ COUNT_DOTS, следовательно, ваш бесконечный цикл. Попробуйте сделать это:

while ($END_DOTS < $COUNT_DOTS){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...