1、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;
2、 $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'
3、 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;
4、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
5、 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描述
6、冒泡排序和快速排序算法,对象能够是一个数组 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. 使用五种以上方式获取一个文件的扩展名 fun
7、ction 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); retur
8、n $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 <=
9、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];
10、 $array[$j-1] = $tmp; } } } return $array; } //快速排序(数组排序) function quick_sort($array) { if (count($array) <= 1) return $array; $key = $array[0]; $left_arr = ar
11、ray();
$right_arr = array();
for ($i=1; $i 12、ft_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 13、<= $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);
14、 }
}
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{
15、 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[$ 16、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];
}
ret 17、urn $new_array;
}
一份php面试题(附答案) -06-25 10:36
考的很基础,但基础不牢,有一批不会做。像在HTTP 1.0中,状态码 401 的含义,error_reporting(2047)这些不知道。但用2047似乎有点儿变态,太不易读。
如果能够参考手册~~~~
* 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的URL记录在预定义变量(2)中。
2.执行程序段将输出(3)。
3.在HTTP 1.0中,状态码 401 的含义是( 18、4);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(5)。
4.数组函数 arsort 的作用是(6);语句 error_reporting(2047)的作用是(7)。
5.PEAR中的数据库连接字符串格式是(8)。
6.写出一个正则表示式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):(9)。
7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句(10)动态装载PHP模块,
然后再用语句(11)使得Apache把所有扩展名为php的文件都作为PHP脚本处理。
8.语句 include 和 require 都 19、能把另外一个文件包含到当前文件中,它们的区别是(12);为了避免多次包含同一文件,能够用语句(13)来代替它们。
9.类的属性能够序列化后保存到 session 中,从而以后能够恢复整个类,这要用到的函数是(14)。
10.一个函数的参数不能是对变量的引用,除非在php.ini中把(15)设为on.
11.SQL 中LEFT JOIN的含义是(16)。
如果 tbl_user记录了学生的姓名(name)和学号(ID),
tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),
要想打印出各个学生姓名及 20、对应的的各科总成绩,则能够用SQL语句(17)。
12.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须(18)。
13.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
14.简述论坛中无限分类的实现原理。
15.设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输入信息后点击按钮就能够把窗口关闭,而输入的信息却在主网页中显示。
//答案(填空):
1. echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"];
2. 0
21、3. (4)未授权 (5) header("HTTP/1.0 404 Not Found");
4. (6)对数组进行逆向排序并保持索引关系 (7)All errors and warnings
5. 没弄明白
6. /