php常用自定义函数

1,写一个函数,算出两个文件的相对路径

有两种方法,一种是利用array的相关方法,如例1,另外一种是使用?:;运算符

先看第一种方法

function getrelativepath2($path1,$path2){
    $array1=explode('/',$path1);
    $array2=explode('/',$path2);
    //先获取路径中相同的部分
    $intersect = array_intersect_assoc($array1,$array2);
    $arrayrtn1 = array_fill(0,count($array2)-count($intersect)-1,'..');
    $arrayrtn2 = array_slice($array2,count($intersect));

    return implode('/',array_merge($arrayrtn1,$arrayrtn2));
}
View Code

方法解析:

这种方法采用了php自带的array的相关函数

 array_intersect_assoc($array1,$array2); //表示对比并获取array1和array2中相同的array,并返回这个array;

 array_fill(int $strat,int $size, string $str); //表示从$start开始填充$size个$str;

 array_slice(array $array , int $offset, int $length);//表示从$array中窃取从$offset开始$length个array中的数据,

 array_merge(array $array1,array $array2); //表示合并array1和array2

 implode(string $str,array $array);//表示返回一个用$str隔开的array字符串

接着看第二种方法

function getrelativepath($path1,$path2){
    $array1=explode('/',$path1);
    $array2=explode('/',$path2);
    $relationpath="";
    for($i=1;$i<count($array2)-1;$i++){
        $relationpath.=$array1[$i]==$array2[$i]?'../':$array2[$i].'/';
    }
    return $relationpath;
}    
获取相对路径

方法解析:

这种方法主要是用了?:;运算符来进行运算

容易出错点:

explode()函数返回时,第一个匹配/的是空格

原文地址:https://www.cnblogs.com/ningheshutong/p/5275536.html