首页 > 开发 > PHP > 正文

PHP面试中常见的面试试题与算法例子

2024-05-04 23:06:35
字体:
来源:转载
供稿:网友

本文章整理的PHP面试题目主要从两个方法来做,一个是字符串与文件的操作例子,另一个是常用的几种排序算法的例子,下面一起来看看,下面是四道比较常见的题目,主要考察的是对字符串函数以及文件操作相关函数的掌握程度.

1、PHP翻转中文字符串,代码如下:

  1. function reverse($str){ 
  2.     $r = array(); 
  3.     for($i=0; $i<mb_strlen($str); $i++){ 
  4.         $r[] = mb_substr($str$i, 1, 'UTF-8'); 
  5.     } 
  6.     return implode(array_reverse($r)); 
  7. echo reverse('www.Vevb.com php粉丝网'); 
  8. //结果:'php粉丝网 moc.Vevb.wwww' 

2、PHP计算URL的文件后缀名,代码如下:

  1. function getext($url){ 
  2.     $data = parse_url($url); 
  3.     $path = $data['path']; 
  4.     $info = pathinfo($path); 
  5.     return $info['extension']; 
  6. echo getext('http://www.Vevb.com/ '); 
  7. //结果:'html' 

3、PHP计算两个文件的相对路径,代码如下:

  1. function getrpath($path$conpath){ 
  2.     $pathArr = explode('/'$path); 
  3.     $conpathArr = explode('/'$conpath); 
  4.     $dismatchlen = 0; 
  5.     for($i=0; $i<count($pathArr); $i++){ 
  6.         if($conpathArr[$i] != $pathArr[$i]){ 
  7.             $dismatchlen = count($pathArr) - $i
  8.             $arrleft = array_slice($pathArr$i); 
  9.             break
  10.         } 
  11.     } 
  12.     return str_repeat('../'$dismatchlen).implode('/'$arrleft); 
  13. $a = '/a/b/c/d/e.php'
  14. $b = '/a/b/12/34/5.php'
  15. echo getrpath($a$b); 
  16. //结果:'../../../c/d/e.php' 

4、PHP遍历目录下的所有文件和文件夹,代码如下:

  1. function finddir($dir){ 
  2.     $files = array(); 
  3.     if(is_dir($dir)){ 
  4.         if($handle = opendir($dir)){ 
  5.             while(($file = readdir($handle)) !== false){ 
  6.                 if($file != '.' && $file != '..'){ 
  7.                     if(is_dir(rtrim($dir'/').'/'.$file)){ 
  8.                         $files[$file] = finddir(rtrim($dir'/').'/'.$file); 
  9.                     }else
  10.                         $files[] = rtrim($dir'/').'/'.$file
  11.                     } 
  12.                 } 
  13.             } 
  14.             closedir($handle); 
  15.         } 
  16.     } 
  17.     return $files
  18. print_r(finddir('F:/Golang/src')); 
  19. //结果: 
  20. Array 
  21.     [0] => F:/Golang/src/hello.go 
  22.     [1] => F:/Golang/src/src.exe 
  23.     [test] => Array 
  24.         ( 
  25.             [0] => F:/Golang/src/test/sss.txt 
  26.         ) 
  27.  

除了这些字符串、文件操作的基本函数考察外,基础算法也是面试中考察比较多的,具体请看以前总结的关于PHP基础算法的文章.

下面分享一些最常见的算法,用PHP如何实现.

1、冒泡排序,代码如下:

  1. function bubble_sort($arr) { 
  2.     $n=count($arr); 
  3.     for($i=0;$i<$n-1;$i++){ 
  4.         for($j=$i+1;$j<$n;$j++) { 
  5.             if($arr[$j]<$arr[$i]) { 
  6.                 $temp=$arr[$i]; 
  7.                 $arr[$i]=$arr[$j]; 
  8.                 $arr[$j]=$temp
  9.             } 
  10.         } 
  11.     } 
  12.     return $arr

2、归并排序,代码如下:

  1. function Merge(&$arr$left$mid$right) { 
  2.   $i = $left
  3.   $j = $mid + 1; 
  4.   $k = 0; 
  5.   $temp = array(); 
  6.   while ($i <= $mid && $j <= $right
  7.   { 
  8.     if ($arr[$i] <= $arr[$j]) 
  9.       $temp[$k++] = $arr[$i++]; 
  10.     else 
  11.       $temp[$k++] = $arr[$j++]; 
  12.   } 
  13.   while ($i <= $mid
  14.     $temp[$k++] = $arr[$i++]; 
  15.   while ($j <= $right
  16.     $temp[$k++] = $arr[$j++]; 
  17.   for ($i = $left$j = 0; $i <= $right$i++, $j++) 
  18.     $arr[$i] = $temp[$j]; 
  19.  
  20. function MergeSort(&$arr$left$right
  21.   if ($left < $right
  22.   { 
  23.     $mid = floor(($left + $right) / 2); 
  24.     MergeSort($arr$left$mid); 
  25.     MergeSort($arr$mid + 1, $right); 
  26.     Merge($arr$left$mid$right); 
  27.   } 

3、二分查找-递归,代码如下:

  1. function bin_search($arr,$low,$high,$value) { 
  2.     if($low>$high
  3.         return false; 
  4.     else { 
  5.         $mid=floor(($low+$high)/2); 
  6.         if($value==$arr[$mid]) 
  7.             return $mid
  8.         elseif($value<$arr[$mid]) 
  9.             return bin_search($arr,$low,$mid-1,$value); 
  10.         else 
  11.             return bin_search($arr,$mid+1,$high,$value); 
  12.     } 

4、二分查找-非递归,代码如下:

  1. function bin_search($arr,$low,$high,$value) { 
  2.     while($low<=$high) { 
  3.         $mid=floor(($low+$high)/2); 
  4.         if($value==$arr[$mid]) 
  5.             return $mid
  6.         elseif($value<$arr[$mid]) 
  7.             $high=$mid-1; 
  8.         else 
  9.             $low=$mid+1; 
  10.     } 
  11.     return false; 

5、快速排序,代码如下:

  1. function quick_sort($arr) { 
  2.     $n=count($arr); 
  3.     if($n<=1) 
  4.         return $arr
  5.     $key=$arr[0]; 
  6.     $left_arr=array(); 
  7.     $right_arr=array(); 
  8.     for($i=1;$i<$n;$i++) { 
  9.         if($arr[$i]<=$key
  10.             $left_arr[]=$arr[$i]; 
  11.         else 
  12.             $right_arr[]=$arr[$i]; 
  13.     } 
  14.     $left_arr=quick_sort($left_arr); 
  15.     $right_arr=quick_sort($right_arr); 
  16.     return array_merge($left_arr,array($key),$right_arr); 

6、选择排序,代码如下:

  1. function select_sort($arr) { 
  2.     $n=count($arr); 
  3.     for($i=0;$i<$n;$i++) { 
  4.         $k=$i
  5.         for($j=$i+1;$j<$n;$j++) { 
  6.            if($arr[$j]<$arr[$k]) 
  7.                $k=$j
  8.         } 
  9.         if($k!=$i) { 
  10.             $temp=$arr[$i]; 
  11.             $arr[$i]=$arr[$k]; 
  12.             $arr[$k]=$temp
  13.         } 
  14.     } 
  15.     return $arr

7、插入排序,代码如下:

  1. function insertSort($arr) { 
  2.     $n=count($arr); 
  3.     for($i=1;$i<$n;$i++) { 
  4.         $tmp=$arr[$i]; 
  5.         $j=$i-1; 
  6.         while($arr[$j]>$tmp) { 
  7.             $arr[$j+1]=$arr[$j]; 
  8.             $arr[$j]=$tmp
  9.             $j--; 
  10.             if($j<0) 
  11.                 break
  12.         } 
  13.     } 
  14.     return $arr

当然还会有更多其它的像数据库操作或一些基本的函数使用例子,在此我们就不写了大家可在本站相关文章处找.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表