php常用自定义函数

时间:2021-03-19 02:06:55

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));
}

方法解析:

这种方法采用了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()函数返回时,第一个匹配/的是空格