本文章整理的PHP面試題目主要從兩個方法來做,一個是字符串與文件的操作例子,另一個是常用的幾種排序算法的例子,下面一起來看看,下面是四道比較常見的題目,主要考察的是對字符串函數(shù)以及文件操作相關(guān)函數(shù)的掌握程度.
1、PHP翻轉(zhuǎn)中文字符串,代碼如下:
- function reverse($str){
- $r = array();
- for($i=0; $i<mb_strlen($str); $i++){
- $r[] = mb_substr($str, $i, 1, 'UTF-8');
- }
- return implode(array_reverse($r));
- }
- echo reverse('www.survivalescaperooms.com php粉絲網(wǎng)');
- //結(jié)果:'php粉絲網(wǎng) moc.Vevb.wwww'
2、PHP計算URL的文件后綴名,代碼如下:
- function getext($url){
- $data = parse_url($url);
- $path = $data['path'];
- $info = pathinfo($path);
- return $info['extension'];
- }
- echo getext('http://www.survivalescaperooms.com/ ');
- //結(jié)果:'html'
3、PHP計算兩個文件的相對路徑,代碼如下:
- function getrpath($path, $conpath){
- $pathArr = explode('/', $path);
- $conpathArr = explode('/', $conpath);
- $dismatchlen = 0;
- for($i=0; $i<count($pathArr); $i++){
- if($conpathArr[$i] != $pathArr[$i]){
- $dismatchlen = count($pathArr) - $i;
- $arrleft = array_slice($pathArr, $i);
- break;
- }
- }
- return str_repeat('../', $dismatchlen).implode('/', $arrleft);
- }
- $a = '/a/b/c/d/e.php';
- $b = '/a/b/12/34/5.php';
- echo getrpath($a, $b);
- //結(jié)果:'../../../c/d/e.php'
4、PHP遍歷目錄下的所有文件和文件夾,代碼如下:
- function finddir($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'));
- //結(jié)果:
- Array
- (
- [0] => F:/Golang/src/hello.go
- [1] => F:/Golang/src/src.exe
- [test] => Array
- (
- [0] => F:/Golang/src/test/sss.txt
- )
- )
除了這些字符串、文件操作的基本函數(shù)考察外,基礎(chǔ)算法也是面試中考察比較多的,具體請看以前總結(jié)的關(guān)于PHP基礎(chǔ)算法的文章.
下面分享一些最常見的算法,用PHP如何實現(xiàn).
1、冒泡排序,代碼如下:
- function bubble_sort($arr) {
- $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、歸并排序,代碼如下:
- function Merge(&$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];
- }
- function MergeSort(&$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);
- }
- }
3、二分查找-遞歸,代碼如下:
- function bin_search($arr,$low,$high,$value) {
- if($low>$high)
- return false;
- else {
- $mid=floor(($low+$high)/2);
- if($value==$arr[$mid])
- return $mid;
- elseif($value<$arr[$mid])
- return bin_search($arr,$low,$mid-1,$value);
- else
- return bin_search($arr,$mid+1,$high,$value);
- }
- }
4、二分查找-非遞歸,代碼如下:
- function bin_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;
- }
- return false;
- }
5、快速排序,代碼如下:
- function quick_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)
- $left_arr[]=$arr[$i];
- else
- $right_arr[]=$arr[$i];
- }
- $left_arr=quick_sort($left_arr);
- $right_arr=quick_sort($right_arr);
- return array_merge($left_arr,array($key),$right_arr);
- }
6、選擇排序,代碼如下:
- function select_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、插入排序,代碼如下:
- function insertSort($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($j<0)
- break;
- }
- }
- return $arr;
- }
當(dāng)然還會有更多其它的像數(shù)據(jù)庫操作或一些基本的函數(shù)使用例子,在此我們就不寫了大家可在本站相關(guān)文章處找.
新聞熱點
疑難解答