PHP面试常见试题和算法实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一、常见字符串和文件操作1、PHP翻转中文字符串123456789functionreverse($str){$r=array();for($i=0;$imb_strlen($str);$i++){$r[]=mb_substr($str,$i,1,'UTF-8');}returnimplode(array_reverse($r));}echoreverse('博客');//结果:'客博PHP涯天moc.ahphp.、PHP计算URL的文件后缀名12345678functiongetext($url){$data=parse_url($url);$path=$data['path'];$info=pathinfo($path);return$info['extension'];}echogetext('=1670');//结果:'html'3、PHP计算两个文件的相对路径12345678910111213141516functiongetrpath($path,$conpath){$pathArr=explode('/',$path);$conpathArr=explode('/',$conpath);$dismatchlen=0;for($i=0;$icount($pathArr);$i++){if($conpathArr[$i]!=$pathArr[$i]){$dismatchlen=count($pathArr)-$i;$arrleft=array_slice($pathArr,$i);break;}}returnstr_repeat('../',$dismatchlen).implode('/',$arrleft);}$a='/a/b/c/d/e.php';$b='/a/b/12/34/5.php';echogetrpath($a,$b);17//结果:'../../../c/d/e.php'4、PHP遍历目录下的所有文件和文件夹123456789101112131415161718192021222324252627282930functionfinddir($dir){$files=array();if(is_dir($dir)){if($handle=opendir($dir)){while(($file=readdir($handle))!==false){if($file!='.'&&$file!='..'){if(is_dir(rtrim($dir,'/').'/'.$file)){$files[$file]=finddir(rtrim($dir,'/').'/'.$file);}else{$files[]=rtrim($dir,'/').'/'.$file;}}}closedir($handle);}}return$files;}print_r(finddir('F:/Golang/src'));//结果:Array([0]=F:/Golang/src/hello.go[1]=F:/Golang/src/src.exe[test]=Array([0]=F:/Golang/src/test/sss.txt))二、常见算法的实现1、冒泡排序1functionbubble_sort($arr){2345678910111213$n=count($arr);for($i=0;$i$n-1;$i++){for($j=$i+1;$j$n;$j++){if($arr[$j]$arr[$i]){$temp=$arr[$i];$arr[$i]=$arr[$j];$arr[$j]=$temp;}}}return$arr;}2、归并排序1234567891011121314151617181920212223242526272829functionMerge(&$arr,$left,$mid,$right){$i=$left;$j=$mid+1;$k=0;$temp=array();while($i=$mid&&$j=$right){if($arr[$i]=$arr[$j])$temp[$k++]=$arr[$i++];else$temp[$k++]=$arr[$j++];}while($i=$mid)$temp[$k++]=$arr[$i++];while($j=$right)$temp[$k++]=$arr[$j++];for($i=$left,$j=0;$i=$right;$i++,$j++)$arr[$i]=$temp[$j];}functionMergeSort(&$arr,$left,$right){if($left$right){$mid=floor(($left+$right)/2);MergeSort($arr,$left,$mid);MergeSort($arr,$mid+1,$right);Merge($arr,$left,$mid,$right);}30}3、二分查找-递归12345678910111213functionbin_search($arr,$low,$high,$value){if($low$high)returnfalse;else{$mid=floor(($low+$high)/2);if($value==$arr[$mid])return$mid;elseif($value$arr[$mid])returnbin_search($arr,$low,$mid-1,$value);elsereturnbin_search($arr,$mid+1,$high,$value);}}4、二分查找-非递归123456789101112functionbin_search($arr,$low,$high,$value){while($low=$high){$mid=floor(($low+$high)/2);if($value==$arr[$mid])return$mid;elseif($value$arr[$mid])$high=$mid-1;else$low=$mid+1;}returnfalse;}5、快速排序123456789functionquick_sort($arr){$n=count($arr);if($n=1)return$arr;$key=$arr[0];$left_arr=array();$right_arr=array();for($i=1;$i$n;$i++){if($arr[$i]=$key)1011121314151617$left_arr[]=$arr[$i];else$right_arr[]=$arr[$i];}$left_arr=quick_sort($left_arr);$right_arr=quick_sort($right_arr);returnarray_merge($left_arr,array($key),$right_arr);}6、选择排序12345678910111213141516functionselect_sort($arr){$n=count($arr);for($i=0;$i$n;$i++){$k=$i;for($j=$i+1;$j$n;$j++){if($arr[$j]$arr[$k])$k=$j;}if($k!=$i){$temp=$arr[$i];$arr[$i]=$arr[$k];$arr[$k]=$temp;}}return$arr;}7、插入排序1234567891011121314functioninsertSort($arr){$n=count($arr);for($i=1;$i$n;$i++){$tmp=$arr[$i];$j=$i-1;while($arr[$j]$tmp){$arr[$j+1]=$arr[$j];$arr[$j]=$tmp;$j--;if($j0)break;}}return$arr;15}原文:来源:phpha发布时间:2015-04-1417:24阅读次数:141

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功