PHP 計算兩個文件的相對路徑

最近看到一個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

相關文章
相關標籤/搜索