这是注释加工别人的代码的例子。
<?php
/*
* @return String 对比后的路径
* @param String $m 拼装前的路径1
* @param String $n 拼装前的路径2
* @param Array $d1 被处理成数组的路径1 array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" }
* @param Array $d2 被处理成数组的路径2 array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(2) "12" [3]=> string(2) "34" }
* @param Int $i 循环次数
* @param Int $j 循环次数
* @param String $path 拼装后的路径
* String函数 explode() 函数把字符串打散为数组。
* Array函数 count() 函数计算数组中的单元数目或对象中的属性个数。
* String函数 rtrim() 函数移除字符串右侧的空白字符或其他预定义字符。
*/
//程序运行过程
/*
第一步:处理传递进来的两个字符串路径
$d1 = Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g [7] => h );
$d2 = Array ( [0] => a [1] => b [2] => e [3] => f [4] => s [5] => g [6] => d );
第二步:去除相同部分
$d1 = Array ( [2] => c [3] => d [4] => e [5] => f [6] => g [7] => h );
$d2 = Array ( [2] => e [3] => f [4] => s [5] => g [6] => d );
第三步:拼装路径--把相同部分替代为../
$path = "../../"
第四步:拼装路径--把不相同部分替代为$a路径
$path = "../../c/d/e/f/g/h/";
第五步:返回去除了最后边/的路径
$path = "../../c/d/e/f/g/h/";
*/
//定义对比路径函数
function comparison($m,$n){
//第一步:处理传递进来的两个字符串路径
$d1 = explode("/",trim(dirname($m),"/")); //处理并拆分数组
$d2 = explode("/",trim(dirname($n),"/")); //处理并拆分数组
//第二步:去除相同部分
for($i=0;$i<count($d1);$i++){
//当不相等的时候停止循环
if($d1[$i]!=$d2[$i]){
break;
}
}
//拼装路径
$path="";
//第三步:拼装路径--把相同部分替代为../
//此处的$i为相等部分的路径
for($j=0;$j<$i;$j++){
//把d2相等部分的路径都替代为 ../
$path.="../";
}
//第四步:拼装路径--把不相同部分替代为$a路径
//此处的$i为相等部分的路径
for($j=$i;$j<count($d1);$j++){
//把不同路径的部分以路径1替代
$path.="{$d1[$j]}/";
}
//第五步:返回去除了最后边/的路径
//返回一个去除了路径最后面的 / 路径
return rtrim($path,"/");
//返回一个未去除了路径最后面的 / 路径
//return $path;
}
//路径1
$a='/a/b/c/d/e/f/g/h/c.php';
//路径2
$b='/a/b/e/f/s/g/d/c.php';
//输出
var_dump(comparison($a,$b));