PHP 計算兩個檔案的相對路徑

今生V5發表於2019-02-16

最近看到一個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相同路徑以後的路徑。

此文已在本人部落格發表地址:碼客

相關文章