代码应该允许创建变量$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);