加入收藏 | 设为首页 | 会员中心 | 我要投稿 百客网 - 百科网 (https://www.baikewang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP数组排序 (笔试题)一份不错的php面试题(附答案)

发布时间:2022-10-11 10:34:51 所属栏目:PHP教程 来源:
导读:  “轻松学PHP”,有学习文档,框架视频教程,网站教程,提供百度分享给大家下载,收藏。大家关注后回复关键词,便可获取!平台将与大家分享前端到后端的实例,学习语法,学习教程,技巧等!欢迎大家关注
  “轻松学PHP”,有学习文档,框架视频教程,网站教程,提供百度分享给大家下载,收藏。大家关注后回复关键词,便可获取!平台将与大家分享前端到后端的实例,学习语法,学习教程,技巧等!欢迎大家关注!
 
  文章正文内容
 
  一份不错的php面试题,附答案,有准备换工作的同学可以参考一下.
 
  一、基础题
 
  1. 写出如下程序的输出结果
 
  ????$str1?=?null;
  
  ????$str2?=?false;
  
  ????echo?$str1==$str2???'相等'?:?'不相等';
  
  ????$str3?=?'';
  
  ????$str4?=?0;
  
  ????echo?$str3==$str4???'相等'?:?'不相等';
  
  ????$str5?=?0;
  
  ????$str6?=?'0';
  
  ????echo?$str5===$str6???'相等'?:?'不相等';?>
  
  2. 写出如下程序的输出结果
 
  ????$a1?=?null;
  
  ????$a2?=?false;
  
  ????$a3?=?0;
  
  ????$a4?=?'';
  
  ????$a5?=?'0';
  
  ????$a6?=?'null';
  
  ????$a7?=?array();
  
  ????$a8?=?array(array());
  
  ????echo?empty($a1)???'true'?:?'false';
  
  ????echo?empty($a2)???'true'?:?'false';
  
  ????echo?empty($a3)???'true'?:?'false';
  
  ????echo?empty($a4)???'true'?:?'false';
  
  ????echo?empty($a5)???'true'?:?'false';
  
  ????echo?empty($a6)???'true'?:?'false';
  
  ????echo?empty($a7)???'true'?:?'false';
  
  ????echo?empty($a8)???'true'?:?'false';?>
  
  3. 写出如下程序的输出结果
 
  ????$test?=?'aaaaaa';
  
  ????$abc?=?&?$test;
  
  ????unset($test);
  
  ????echo?$abc;?>
  
  4. 写出如下程序的输出结果
 
  ????$count?=?5;
  
  ????function?get_count(){
  
  ????????static?$count?=?0;
  
  ????????return?$count++;
  
  ????}
  
  ????echo?$count;
  
  ????++$count;
  
  ????echo?get_count();
  
  ????echo?get_count();?>
  
  5. 写出如下程序的输出结果
 
  ????$GLOBALS['var1']?=?5;
  
  ????$var2?=?1;
  
  ????function?get_value(){
  
  ????????global?$var2;
  
  ????????$var1?=?0;
  
  ????????return?$var2++;
  
  ????}
  
  ????get_value();
  
  ????echo?$var1;
 
  ????echo?$var2;?>
  
  6. 写出如下程序的输出结果
 
  ????function?get_arr($arr){
  
  ????????unset($arr[0]);
  
  ????}
  
  ????$arr1?=?array(1,?2);
  
  ????$arr2?=?array(1,?2);
  
  ????get_arr(&$arr1);
  
  ????get_arr($arr2);
  
  ????echo?count($arr1);
  
  ????echo?count($arr2);?>
  
  7. 使用五种以上方式获取一个文件的扩展名
 
  要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,
 
  必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数,比如 get_ext1($file_name), get_ext2($file_name)
 
  二、算法题
 
  1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组
 
  2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
 
  3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数
 
  【答案】
 
  (以下答案不一定是最好的,只是一个简单的参考)
 
  一、基础题
 
  1. 相等 相等 不相等
 
  2. true true true true true false true false
 
  3. aaaaaa 参考:里面的结论二
 
  4. 5 0 1
 
  5. 5 2
 
  6. 1 2
 
  7. 使用五种以上方式获取一个文件的扩展名
 
  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){
  
  ????return?array_pop(explode('.',?$file_name));
  
  }function?get_ext4($file_name){
  
  ????return?pathinfo($file_name,?PATHINFO_EXTENSION);
  
  }function?get_ext5($file_name){
  
  ????return?strrev(substr(strrev($file_name),?0,?strpos(strrev($file_name),?'.')));
  
  }
  
  二、算法题
 
  1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组
 
  //冒泡排序(数组排序)
 
  function?bubble_sort($array){
  
  ????$count?=?count($array);
  
  ????if?($count?<=?0)?return?false;
  
  ????for($i=0;?$i<$count;?$i++){
  
  ????????for($j=$i;?$j<$count-1;?$j++){
  
  ????????????if?($array[$i]?>?$array[$j]){
  
  ????????????????$tmp?=?$array[$i];
  
  ????????????????$array[$i]?=?$array[$j];
  
  ????????????????$array[$j]?=?$tmp;
  
  ????????????}
  
  ????????}
  
  ????}
  
  ????return?$array;
  
  }
  
  //快速排序(数组排序)
 
  function?quick_sort($array)?{
  
  ????if?(count($array)?<=?1)?return?$array;
  
  ????$key?=?$array[0];
  
  ????$left_arr?=?array();
  
  ????$right_arr?=?array();
  
  ????for?($i=1;?$iif?($array[$i]?
  
  ????????????$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);
  
  }
  
  2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
 
  //二分查找(数组里查找某个元素)
 
  function?bin_sch($array,?$low,?$high,?$k){
  
  ????if?($low?<=?$high){
  
  ????$mid?=?intval(($low+$high)/2);
  
  ????if?($array[$mid]?==?$k){
  
  ????return?$mid;
  
  ????}elseif?($k?return?bin_sch($array,?$low,?$mid-1,?$k);
  
  ????}else{
  
  ????return?bin_sch($array,?$mid+1,?$high,?$k);
  
  ????}
  
  ????}
  
  ????return?-1;
  
  }
  
  //顺序查找(数组里查找某个元素)
 
  function?seq_sch($array,?$n,?$k){
  
  ????$array[$n]?=?$k;
  
  ????for($i=0;?$i<$n;?$i++){
  
  ????????if($array[$i]==$k){
  
  ????????????break;
  
  ????????}
  
  ????}
  
  ????if?($i<$n){
  
  ????????return?$i;
  
  ????}else{
  
  ????????return?-1;
  
  ????}
  
  }
  
  3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数
 
  //二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序PHP数组排序,0是降序
 
  function?array_sort($arr,?$keys,?$order=0)?{
  
  ????if?(!is_array($arr))?{
  
  ????????return?false;
  
  ????}
  
  ????$keysvalue?=?array();
  
  ????foreach($arr?as?$key?=>?$val)?{
  
  ????????$keysvalue[$key]?=?$val[$keys];
  
  ????}
  
  ????if($order?==?0){
  
  ????????asort($keysvalue);
  
  ????}else?{
  
  ????????arsort($keysvalue);
  
  ????}
  
  ????reset($keysvalue);
  
  ????foreach($keysvalue?as?$key?=>?$vals)?{
  
  ????????$keysort[$key]?=?$key;
  
  ????}
  
  ????$new_array?=?array();
  
  ????foreach($keysort?as?$key?=>?$val)?{
  
  ????????$new_array[$key]?=?$arr[$val];
  
  ????}
  
  ????return?$new_array;
  
  }
  
 

(编辑:百客网 - 百科网)

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