我需要多次在文件路径上执行dirname()
以排除子文件夹,所以像这样:
dirname(dirname(dirname(__FILE__)));
我需要在文件路径上执行此操作的次数是完全动态的(不是固定的)所以我需要以某种方式变量$x
次... {/ p>
我可以这样做:
$x=6;//amount of sub-folders involved in the path
if($x==1){dirname(__FILE__);}
elseif($x==2){dirname(dirname(__FILE__));}
elseif($x==3){dirname(dirname(dirname(__FILE__)));}
elseif($x==4){dirname(dirname(dirname(dirname(__FILE__))));}//and so on.....
但这不是一种专业的方式,它永远不可靠(如果$x
= 9999999 ......)。
有谁知道我该怎么做?
答案 0 :(得分:1)
递归是我朋友的答案!
function go_up_x_times($path, $x) {
if ($x <= 0) {
return $path; // we're done, yay!
}
return dirname(go_up_x_times($path, $x - 1));
}
go_up_x_times(__FILE__, 5);
答案 1 :(得分:1)
您需要调用dirname
函数$x
次,称为循环:
$x=6; //amount of sub-folders involved in the path
$dir = dirname(__FILE__);
while(max(0, --$x)) {
$dir = dirname($dir);
}