最近看到一个php的面试题,是在知道两个文件的绝对路径的状况下,求出文件1相对于文件2的相对路径。
这个问题,看似很简单,其实真简单,但却思考了好久才解决,变笨了!
下面咱们个人方法,写出来,供你们参考,若是有不一样意见或者问题,请留言给我:php
/** * [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相同路径之后的路径。面试
此文已在本人博客发表地址:码客code