黑夜路人出的几道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的一些基础知识分享
Jul 27 PHP
php模拟js函数unescape的函数代码
Oct 20 PHP
Windows中使用计划任务自动执行PHP程序实例
May 09 PHP
php实现最简单的MVC框架实例教程
Sep 08 PHP
一个经典实用的PHP图像处理类分享
Nov 18 PHP
php求一个网段开始与结束IP地址的方法
Jul 09 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
Jan 15 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
PHP 搜索查询功能实现
Nov 29 PHP
详解Yii实现分页的两种方法
Jan 14 PHP
Laravel5.5新特性之友好报错以及展示详解
Aug 13 PHP
PHP反射实际应用示例
Apr 03 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php后台程序与Javascript的两种交互方式
2009/10/25 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
PHP读取xml方法介绍
2013/01/12 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
js+HTML5实现视频截图的方法
2015/06/16 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
微信小程序开发的基本流程步骤
2019/01/31 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
解决python 上传图片限制格式问题
2019/10/30 Python
wxPython实现整点报时
2019/11/18 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
python对XML文件的操作实现代码
2020/03/27 Python
python空元组在all中返回结果详解
2020/12/15 Python
Java基础知识面试题
2014/03/25 面试题
对公司合理化的建议书
2014/03/12 职场文书
承诺书怎么写
2014/03/26 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
同学会邀请函模板
2015/01/30 职场文书
工资证明格式模板
2015/06/12 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
MySQL触发器的使用
2021/05/24 MySQL
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
Mysql 设置boolean类型的操作
2021/06/04 MySQL
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS