最近看到一个php的面试题,是在知道两个文件的绝对路径的情况下,求出文件1相对于文件2的相对路径。
这个问题,看似很简单,其实真简单,但却思考了很久才解决,变笨了!
下面我们我的方法,写出来,供大家参考,如果有不同意见或者问题,请留言给我:
/**
* [myRelativePath 计算文件2相对于文件1的相对路径]
* @param [string] $file1 [文件1的绝对路径]
* @param [string] $file2 [文件2的绝对路径]
* @return [string] [文件2相对于文件1的相对路径]
*/
function getRelativePath($file1,$file2){
//分别对两个文件路径进行分割
$file1_arr = explode('/', $file1);
$file2_arr = explode('/', $file2);
//计算file1文件不同于file2的部分(计算差集)
$arr1 = array_diff_assoc($file1_arr,$file2_arr);
$arr2 = array_diff_assoc($file2_arr,$file1_arr);
$arr1_cnt = count($arr1);
$str_path = '';
for($i=0;$i<$arr1_cnt-1;$i++){
$str_path .='../';
}
$path2 = implode('/',$arr2);
return $str_path . $path2;
}
思路还是很简单,就是先找出相同的部分,然后计算文件1到相同的路径的相对路径,
再然后,拼接文件2相同路径以后的路径。
此文已在本人博客发表地址:码客
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。