黑夜路人出的几道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 相关文章推荐
漂亮但不安全的CTB
Oct 09 PHP
模仿OSO的论坛(五)
Oct 09 PHP
php下将XML转换为数组
Jan 01 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
Jan 17 PHP
浅谈PHP调用Webservice思路及源码分享
Jun 04 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
PHP实现随机数字、字母的验证码功能
Aug 01 PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 PHP
Laravel使用RabbitMQ的方法示例
Jun 18 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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 FLEA中二叉树数组的遍历输出
2012/09/26 PHP
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
php绘制圆形的方法
2015/01/24 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
js实现window.open不被拦截的解决方法汇总
2014/10/30 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
2019/05/16 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
2019/05/22 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
原生js实现弹幕效果
2020/11/29 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
python传递参数方式小结
2015/04/17 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
家长学校工作方案
2014/05/07 职场文书
企业管理标语
2014/06/10 职场文书
Redis 配置文件重要属性的具体使用
2021/05/20 Redis
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang