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()函数返回时,第一个匹配/的是空格