注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

isblog主页

或许不一定要做得最多,但一定要做得最好! 能力就是一种财富,积累越多,就越体现你

 
 
 

日志

 
 

PHP面试题:写一个函数,算出两个文件的相对路径  

2012-04-04 18:50:33|  分类: PHP学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

转自:http://www.phpwebgo.com/2012/03/20/201.html

PHP面试题:写一个函数,算出两个文件的相对路径

 如 $a = ’/a/b/c/d/e.php’;   

  $b = ’/a/b/12/34/c.php’;   

  计算出 $b 相对于 $a 的相对路径应该是 ../../c/d

下面贴贴我的思路

<?php
 /*计算$b相对于$a的位置 ../../c/d/ */ 
$a = '/a/b/c/d/e.php'; 
$b = '/a/b/12/34/c.php'; 
$s1 = microtime(true); 
echo getDir1($a,$b); 
echo microtime(true) - $s1.'<hr>';  
$s2 = microtime(true);
 echo getDir2($a,$b); 
echo microtime(true) - $s2.'<hr>';  
function getDir1($a,$b) {  
   $tmp_a = $tmp_b = $tmp_c = $tmp_d = array();  
   $tmp_a = explode('/',$a);  
   $tmp_b = explode('/',$b); 
   array_pop($tmp_a);  
   array_pop($tmp_b);  
   foreach($tmp_a as $k=>$v)  {   
     if($v == '')   {    
        unset($tmp_a[$k]);    
        continue;   
     }  
     if($v == $tmp_b[$k])   {    
        $tmp_c[] = '..';    
        unset($tmp_a[$k]);   
     }else{   
        break 1;   
     }  
  }  
  $tmp_d = array_merge($tmp_c,$tmp_a);  
  return implode('/',$tmp_d); 
function getDir2($a,$b) { 
   $tmp_a = $tmp_b = array();  
   $tmp_a = explode('/',$a);  
   $tmp_b = explode('/',$b);  
   array_pop($tmp_a);  
   array_pop($tmp_b);  
   foreach($tmp_a as $k=>$v)  {   
     if($v == '')   {    
       unset($tmp_a[$k]);    
       continue;   
     }
     if($v == $tmp_b[$k])   {
       array_unshift($tmp_a,'..');
       unset($tmp_a[$k]);
     }else{
       break 1;
    }
  }
  return implode('/',$tmp_a);
}

 

测试发现方法2比方法1快5倍左右,如有不对欢迎指正

  评论这张
 
阅读(834)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017