黑夜路人出的几道php笔试题


Posted in PHP onAugust 04, 2009

一、基础题
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){ 
$p = pathinfo($file_name); 
return $p['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=$count-1; $j>$i; $j--){ 
if ($array[$j] < $array[$j-1]){ 
$tmp = $array[$j]; 
$array[$j] = $array[$j-1]; 
$array[$j-1] = $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; $i<count($array); $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); 
}

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 < $array[$mid]){ 
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是升序,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; 
}
PHP 相关文章推荐
模仿OSO的论坛(三)
Oct 09 PHP
php empty函数 使用说明
Aug 10 PHP
php 判断是否是中文/英文/数字示例代码
Sep 30 PHP
PHP对象递归引用造成内存泄漏分析
Aug 28 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
通过php修改xml文档内容的方法
Jan 23 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
学习php设计模式 php实现享元模式(flyweight)
Dec 07 PHP
php session的锁和并发
Jan 22 PHP
超强多功能php绿色集成环境详解
Jan 25 PHP
php中Ioc(控制反转)和Di(依赖注入)
May 07 PHP
利用php操作memcache缓存的基础方法示例
Aug 02 PHP
谈谈新手如何学习PHP 默默经典版本
Aug 04 #PHP
用PHP的ob_start() 控制您的浏览器cache
Aug 03 #PHP
一贴学会PHP 新手入门教程
Aug 03 #PHP
php 获得汉字拼音首字母的函数
Aug 01 #PHP
PHP 上传文件的方法(类)
Jul 30 #PHP
PHP 文章中的远程图片采集到本地的代码
Jul 30 #PHP
PHP 中文乱码解决办法总结分析
Jul 30 #PHP
You might like
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
用javascript编写的第一人称射击游戏
2007/02/25 Javascript
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
亲自动手实现vue日历控件
2019/06/26 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
Python基础之函数用法实例详解
2014/09/10 Python
wxPython框架类和面板类的使用实例
2014/09/28 Python
python实现将内容分行输出
2015/11/05 Python
在centos7中分布式部署pyspider
2017/05/03 Python
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
实习生自我鉴定
2013/12/12 职场文书
简短证婚人证婚词
2014/01/09 职场文书
舞蹈比赛获奖感言
2014/02/04 职场文书
护士个人自我鉴定
2014/03/24 职场文书
共青团员自我评价
2015/03/10 职场文书
公司慰问信范文
2015/03/23 职场文书
员工表扬信怎么写
2015/05/05 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python