黑夜路人出的几道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 相关文章推荐
PHP的开合式多级菜单程序
Oct 09 PHP
php下MYSQL limit的优化
Jan 10 PHP
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
May 18 PHP
PHP sprintf()函数用例解析
May 18 PHP
php中CI操作多个数据库的代码
Jul 05 PHP
使用swoole扩展php websocket示例
Feb 13 PHP
php中AES加密解密的例子小结
Feb 18 PHP
使用配置类定义Codeigniter全局变量
Jun 12 PHP
PHP多进程编程实例
Oct 15 PHP
PHP实现服务器状态监控的方法
Dec 09 PHP
php中$_POST与php://input的区别实例分析
Jan 07 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
Dec 06 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表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
php 的反射详解及示例代码
2016/08/25 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
php多进程应用场景实例详解
2019/07/22 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
详解Python文件修改的两种方式
2019/08/22 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
python批量处理多DNS多域名的nslookup解析实现
2020/06/28 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
远程学习的教学用品和家庭学习资源:Really Good Stuff
2020/04/27 全球购物
文员自我评价怎么写
2013/09/19 职场文书
我的祖国演讲稿
2014/05/04 职场文书
公司投资建议书
2014/05/16 职场文书
公司活动总结怎么写
2014/06/25 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
志愿者个人总结
2015/03/03 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript