首页 > 代码库 > PHP计算两个路径的相对路径
PHP计算两个路径的相对路径
面试遇到的一个笔试题,自己写了一个这样的程序
1 $a = "a/b/c/d/e/f/1.txt"; 2 $b = "a/b/c/d/f/e/2.txt"; 3 4 $a_arr = explode(‘/‘,$a); 5 $b_arr = explode(‘/‘,$b); 6 foreach($a_arr as $k=>$v){ 7 if($a_arr[$k] == $b_arr[$k]){ 8 unset($a_arr[$k]); 9 unset($b_arr[$k]);10 }else{11 break;12 }13 }14 15 $num = count($b_arr);16 $url = ‘‘;17 $a_url = implode(‘/‘,$a_arr);18 for($i=0;$i<($num-1);$i++){19 $url .= ‘../‘;20 }21 $url .=$a_url;22 echo $url;
感觉不对,看到别的人做的,顿悟
1 function relativePath($aPath, $bPath) { 2 $aArr = explode(‘/‘, $aPath); //explode函数用于切分字符串,返回切分后的数组,此处用‘/‘切分字符串 3 $bArr = explode(‘/‘, $bPath); 4 $aDiffToB = array_diff_assoc($aArr, $bArr); //array_diff_assoc()用于获取A数组与B数组之间元素的差集,Key和Value都不相同视为不同元素,此处返回在A数组中且与B数组不相同的元素 5
$aDiffToA = array_diff_assoc($bArr, $aArr);
$count = count($aDiffToA); 6 7 $path = ‘‘; 8 for($i = 0; $i < $count - 1; $i++){ 9 $path .= ‘../‘; 10 }11 12 $path .= implode(‘/‘, $aDiffToA); //implode()用于使用指定字符串连接数组元素,此处返回用‘/‘连接数组元素后的字符串13 14 return $path;15 }16 17 echo relativePath(‘/a/b/c/d/a.php‘, ‘/a/b/1/2/b.php‘);
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。