首页 > Web开发 > 详细

PHP计算两个路径的相对路径

时间:2014-07-06 20:02:13      阅读:365      评论:0      收藏:0      [点我收藏+]

面试遇到的一个笔试题,自己写了一个这样的程序

 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‘);

 

 

PHP计算两个路径的相对路径,布布扣,bubuko.com

PHP计算两个路径的相对路径

原文:http://www.cnblogs.com/anyongchao/p/3824722.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!