加入收藏 | 设为首页 | 会员中心 | 我要投稿 莆田站长网 (https://www.0594zz.com.cn/)- 业务安全、应用安全、终端安全、数据分析、数据应用!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-06-30 09:28:10 所属栏目:PHP教程 来源:互联网
导读:本文章整理的PHP面试题目主要从两个方法来做,一个是字符串与文件的操作例子,另一个是常用的几种排序算法的例子,下面一起来看看,下面是四道比较常见的题目,主要考察的是对字符串函数以及文件操作相关函数的掌握程度. 1、PHP翻转中文字符串,代码如下: function
  本文章整理的PHP面试题目主要从两个方法来做,一个是字符串与文件的操作例子,另一个是常用的几种排序算法的例子,下面一起来看看,下面是四道比较常见的题目,主要考察的是对字符串函数以及文件操作相关函数的掌握程度.
 
  1、PHP翻转中文字符串,代码如下:
 
  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.phpfensi.com php粉丝网');
  //结果:'php粉丝网 moc.phpfensi.wwww'
  2、PHP计算URL的文件后缀名,代码如下:
 
  function getext($url){
      $data = parse_url($url);
      $path = $data['path'];
      $info = pathinfo($path);
      return $info['extension'];
  }
  echo getext('http://www.phpfensi.com/ ');
  //结果:'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);
  //结果:'../../../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'));
  //结果:
  Array
  (
      [0] => F:/Golang/src/hello.go
      [1] => F:/Golang/src/src.exe
      [test] => Array
          (
              [0] => F:/Golang/src/test/sss.txt
          )
   
  )
  除了这些字符串、文件操作的基本函数考察外,基础算法也是面试中考察比较多的,具体请看以前总结的关于PHP基础算法的文章.
 
  下面分享一些最常见的算法,用PHP如何实现.
 
  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;
  }
  当然还会有更多其它的像数据库操作或一些基本的函数使用例子,在此我们就不写了大家可在本站相关文章处找.

(编辑:莆田站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读