/** - * php 面试题
 - * edit bbs.it-home.org
 - * at 2013-05-13
 - */
 - functiongbk_strrev($str){//----gbk中文字符串翻转-----
 - $len=strlen($str); 
 - for($i=0;$i<$len;$i++){ 
 -    $char=$str{0}; 
 -    if(ord($char)>127){ 
 -        $i++; 
 -        if($i<$len){ 
 -           $arr[]=substr($str,0,2); 
 -          $str=substr($str,2); 
 -      }
    }else{  -   $arr[]=$char; 
 -      $str=substr($str,1); 
 -      } 
 -   } 
 -   returnimplode(array_reverse($arr)); 
 -  }
 $str=’中文.look!’; echo gbk_strrev($str); functionutf8_strrev($string){//-----utf8中文翻转--------  -          $index=0;
          $length=strlen($string);                    while($first_b=substr($string,$index,1)){                    if(ord($first_b)>224){                             $arr[]=substr($string,$index,3);                             $index+=3;                    }elseif(ord($first_b)>192){                             $arr[]=substr($string,$index,2);                             $index+=2;                    }else{                             $arr[]=substr($string,$index,1);                             $index+=1;                             }                    }                    returnimplode(array_reverse($arr));          } $str=’中文.look!’; echo utf8_strrev($str); functiongbk_substr($str,$length){//-----gbk截取中文字符串--------          $index=0;          $result=’’;          for($i=0;$i<$length;$i++){                    $first_b=substr($str,$index,1);                    if(ord($first_b)>127){                             $result.= substr($str,$index,2);                             $index+=2;                    }else{                             $result.= substr($str,$index,1);                             $index+=1;                             }                    }                    return$result;          } $str = "你好china"; echo gbk_substr($str, 5); functionutf8_substr($string,$length){//-----------utf8编码截取中文字符串-------------          $index=0;          $result=’’;          for($i=0;$i<$length;$i++){                    $first_b=substr($string,$index,1);                    if(ord($first_b)>224){                             $result.= substr($string,$index,3);                             $index+=3;                    }elseif(ord($first_b>192)){                             $result.= substr($string,$index,2);                             $index+=2;                    }else{                             $result.= substr($string,$index,1);                             $index+=1;                             }                    }                    return$result;          } $str = "你好china"; echo (utf8_substr($str, 3)); functionscan_dirs($path){//-----遍历目录------------          $path_source=opendir($path);          while(($file=readdir($path_source))!==false){                    //if(is_dir($path.’/’.$file)&&$file!= ’.’&&$file !=’..’){                    if(is_dir($path. ’/’ . $file) && $file != ’.’ && $file != ’..’) {                             echo$path.’/’.$file,’ ’;                             scan_dirs($path.’/’.$file);                    }else{                             echo$path.’/’.$file,’ ’;                             }                    }          } $dir_name = ’E:/amp/apache/htdocs/mvc’; scan_dirs($dir_name); function get_ext1($file_name){//--------------获取文件后缀名---------- return strrchr($file_name, ’.’); } function get_ext2($file_name){ return substr($file_name,strrpos($file_name, ’.’)); } function get_ext3($file_name){ $arr=explode(’.’, $file_name); return array_pop($arr); } function get_ext4($file_name){ $p = pathinfo($file_name); return$p[’dirname’].’------’.$p[’basename’].’------’.$p[’extension’]; } function get_ext5($file_name){ return strrev(substr(strrev($file_name), 0,strpos(strrev($file_name), ’.’))); } echoget_ext5(’E:/amp/apache/htdocs/mvc/init.html’); functionmaopao($arr){//------冒泡排序法------------          $flag=false;          $count= count($arr);          for($i=0;$i<$count-1;$i++){                    for($j=0;$j<$count-1-$i;$j++){                             if($arr[$j]>$arr[$j+1]){                                      $tmp=$arr[$j];                                      $arr[$j]=$arr[$j+1];                                      $arr[$j+1]=$tmp;                                      $flag=true;                                      }                             }                             if($flag){                                      $flag=false;                             }else{                                      break;                                      }                    }                    return$arr;          }          $arr=array(12,78,49,68,59,67,93,34,46,33);          var_dump(maopao($arr)); functionxuanze($arr){//---------选择排序----------          for($i=0;$i                   $minIndex=$i;                    $minVal=$arr[$i];                    for($j=$i+1;$j                            if($minVal>$arr[$j]){                                      $minVal=$arr[$j];                                      $minIndex=$j;                                      }                             }                             $tmp=$arr[$i];                             $arr[$i]=$arr[$minIndex];                             $arr[$minIndex]=$tmp;                    }return$arr;          }          $arr=array(12,78,49,68,59,67,93,34,46,33);          var_dump(xuanze($arr)); functioninsertSort($arr){//------------插入排序法---------          for($i=1;$i                   $insertVal=$arr[$i];                    $insertIndex=$i-1;                    while($insertIndex>=0&&$insertVal<=$arr[$insertIndex]){                             $arr[$insertIndex+1]=$arr[$insertIndex];                             $insertIndex--;                             }                             $arr[$insertIndex+1]=$insertVal;                    }                    return$arr;          }          $arr=array(12,78,49,68,59,67,93,34,46,33);          var_dump(insertSort($arr)); function quickSort($array){//-----快速排序法----------   if(count($array) <= 1) return $array;    $key = $array[0];   $left_arr = array();   $right_arr = array();     for($i=1; $i         if ($array[$i] <= $key)                    $left_arr[] = $array[$i];           else                    $right_arr[] = $array[$i];    }    $left_arr = quick_sort($left_arr);   $right_arr = quick_sort($right_arr);    return array_merge($left_arr, array($key), $right_arr);  }          $arr=array(12,78,49,68,59,67,93,34,46,33);          var_dump(quickSort($arr)); function seqSch($arr, $num){//---顺序查找-----          $flag=false;  for($i=0;$i       if($arr[$i]==$num){                 echo ’找到了,下标为:’.$i;                 $flag=true;                 }        }  if(!$flag){        echo ’找不到’;        } } $arr=array(12,78,49,68,59,67,93,34,46,33); seqSch($arr,34); functionerFen($arr,$num,$leftIndex,$rightIndex){//----二分查找---前提数组比为有序数组---          if($leftIndex>=$rightIndex){return’找不到’;}          $midIndex=floor(($leftIndex+$rightIndex)/2);          $midValue=$arr[$midIndex];          if($midValue>$num){                    returnerFen($arr,$num,$leftIndex,$midIndex-1);          }elseif($midValue<$num){                    returnerFen($arr,$num,$midIndex+1,$rightIndex);          }else{                    return$midIndex;                    }          } $arr=array(3,5,7,8,9,23,26,36); $leftIndex=0; $rightIndex=count($arr); var_dump(erFen($arr,36,$leftIndex,$rightIndex));  - ?>
      
  |