国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP面試中常見的面試試題與算法例子

2024-05-04 23:06:35
字體:
供稿:網(wǎng)友

本文章整理的PHP面試題目主要從兩個方法來做,一個是字符串與文件的操作例子,另一個是常用的幾種排序算法的例子,下面一起來看看,下面是四道比較常見的題目,主要考察的是對字符串函數(shù)以及文件操作相關(guān)函數(shù)的掌握程度.

1、PHP翻轉(zhuǎn)中文字符串,代碼如下:

  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.survivalescaperooms.com php粉絲網(wǎng)'); 
  8. //結(jié)果:'php粉絲網(wǎng) 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.survivalescaperooms.com/ '); 
  7. //結(jié)果:'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. //結(jié)果:'../../../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. //結(jié)果: 
  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.  

除了這些字符串、文件操作的基本函數(shù)考察外,基礎(chǔ)算法也是面試中考察比較多的,具體請看以前總結(jié)的關(guān)于PHP基礎(chǔ)算法的文章.

下面分享一些最常見的算法,用PHP如何實現(xiàn).

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

當(dāng)然還會有更多其它的像數(shù)據(jù)庫操作或一些基本的函數(shù)使用例子,在此我們就不寫了大家可在本站相關(guān)文章處找.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 科尔| 庆元县| 鲁山县| 赣州市| 台山市| 宁都县| 胶南市| 台东市| 乐平市| 古蔺县| 岚皋县| 合作市| 蓬溪县| 雷山县| 白河县| 资兴市| 内乡县| 响水县| 故城县| 子洲县| 樟树市| 缙云县| 基隆市| 信宜市| 塘沽区| 嘉鱼县| 商南县| 交口县| 凤阳县| 江津市| 囊谦县| 军事| 崇礼县| 镶黄旗| 东海县| 临漳县| 兰考县| 湟源县| 固安县| 宁武县| 抚州市|