1、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
2、'; $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) ?
3、 '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(); e
4、cho 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
5、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. 使用五种以上方式获取一个文献的扩展名 function get_ext1($file
7、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'];
8、} 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;
9、 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 = array(); $
11、right_arr = array();
for ($i=1; $i 12、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){
13、 $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{
return -1;
15、
}
}
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];
16、
}
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;
}
17、
一份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 的含义是(4);假如返回“找不到文献”的提示,则可用 18、 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),
要想打印出各个学生姓名及对应的的各科总成绩,则能够用SQL语句(1 20、7)。
12.在PHP中,heredoc是一个特殊的字符串,它的结束标志必须(18)。
13.写一个函数,能够遍历一个文献夹下的所有文献和子文献夹。
14.简述论坛中无限分类的实现原理。
15.设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输入信息后点击按钮就能够把窗口关闭,而输入的信息却在主网页中显示。
//答案(填空):
1. echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"];
2. 0
3. (4)未授权 (5) header( 21、"HTTP/1.0 404 Not Found");
4. (6)对数组进行逆向排序并保持索引关系 (7)All errors and warnings
5. 没弄明白
6. /