Setting up URL Dots


Setting up URL Dots

代码应该允许创建变量$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 .= '../';
            }
        }
    }
?>

是的,您的循环将永远运行。

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

考虑$END_DOTS == $COUNT_DOTS。循环中的if块不会执行,因此条件$END_DOTS <= $COUNT_DOTS将保持为true,因此循环将永远运行。

相反,你应该使用

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

if语句仅在$END_DOTS不等于$COUNT_DOTS时执行。如果它们相等,那么用于转义while循环的机制将不会运行。但是,如果$END_DOTS==$COUNT_OTS,while循环中的条件为true,因此是您的无限循环。尝试这样做:

while ($END_DOTS < $COUNT_DOTS){

更容易写成

$ORIGINAL_DOTS = str_ireplace('/test_link', '', 'http://example.com/1/2');
$COUNT_DOTS = substr_count($ORIGINAL_DOTS, '/')-2;
$Dots = str_repeat('../', $COUNT_DOTS);