php面试填空题2015
1.求1+3+5+...+9999的和
for($i=1;$i<=9999;$i++){
$i++;
$sum = $sum + $i;
}
echo $sum;//25005000
?>
2.$a = "abcd",求$a字符串的倒序,请自定义一个函数实现,不能使用已存在的函数
$a = "abcd";
function str($a){
for($j=strlen($a)-1;$j>=0;$j--){
$b .= substr($a,$j,1);
}
return $b;
}
echo str($a);//dcba
?>
3. 有一个数组$a = array('3','8','1','4','11','7');请把数组中的各元素进行有序的排序
方法一(升序排序)
$a = array('3','8','1','4','11','7');
$len = count($a);
for($k = 1;$k < $len;$k++){//$k就是第几步
for($i = 1,$j = $len -1;$i <= $len - $k;$i++,$j--){//$i就是比较的次数
if($a[$j] < $a[$j-1]){//升序排序
$x = $a[$j];
$a[$j] = $a[$j-1];
$a[$j-1] = $x;
}
}
}
print_r($a);//Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 7 [4] => 8 [5] => 11 )
?>
方法二(降序排序)
$a = array('3','8','1','4','11','7');
$len = count($a);
for($k = 1;$k < $len;$k++){//$k就是第几步
for($i = 1,$j = $len -1;$i <= $len - $k;$i++,$j--){//$i就是比较的次数
if($a[$j] > $a[$j-1]){//降序排序
$x = $a[$j];
$a[$j] = $a[$j-1];
$a[$j-1] = $x;
}
}
}
print_r($a);//Array ( [0] => 11 [1] => 8 [2] => 7 [3] => 4 [4] => 3 [5] => 1 )
?>
4.$a = "33^27^5^40^";求33+27+5+40的和
$a = "33^27^5^40^";
$b = (explode("^",$a));
for($i=0;$i<=count($b);$i++){
$sumc = $sumc + $b[$i];
}
echo $sumc;//105
?>
填空题:
1. 在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量
$_SERVER['PHP_SELF']中;
链接到当前页面的URL记录在预定义变量 $_SERVER['HTTP_REFERER']中;
当前执行脚本的绝对路径名 $_SERVER['SCRIPT_FILENAME'];
正在浏览当前页面用户的IP地址$_SERVER['REMOTE_ADDR'];
查询(query)的字符串(URL中第一个问号?之后的内容) $_SERVER['QUERY_STRING'];
得到当前执行脚本路径,包括所得到参数
"http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];或则
"http://".getenv("SERVER_NAME").getenv("REQUEST_URI");
客户端IP $_SERVER['REMOTE_ADDR']; 服务器IP $_SERVER['SERVER_ADDR'];
2. 执行程序段将输出 0
3. 在HTTP 1.0中,状态码200的含义是 服务器成功返回网页;状态码401的含义是 未被授权;
状态码404的含义是 请求的网页不存在; 状态码503的含义是 服务器暂时不可用;
如果返回“找不到文件”的提示,则可用head函数,其语句为
header("HTTP/1.0 404 Not Fount");
4. 数组函数arsort的作用是 对数组进行逆向排序并保持索引关系;
语句error_reporting(2047)的作用是 报告所有的错误和警告;
5. 写出一个正则表达式,过滤网页上的所有的JS/VBS脚本(即把script标记及其内容都去掉)
$script="以下内容不显示:
";
echo preg_replace("/.*?<\ script="">/si", "替换内容", $script);
?>
6. 以Apache 模块的方式安装PHP,在文件http.conf中动态装载php模块的语句
LoadModule php5_module “D:/php5/php5apache2_2.dll”
使得Apache把所有的扩展名为php文件都作为PHP脚本处理Addtype application/x-httpd-php .php
7. 语句include和require都能把另外一个文件包含到当前文件中,他们的区别是
发生异常时include产生警告,require产生致命的错误
为了避免多次包含同一文件,可以用语句include_once() 或者 require_once()来代替它们。
8. 类的属性可以序列化后保存到session中,从而以后可以恢复整个类,这要用到的函数是 serialize()/unserialize()。
9. 一个函数的参数不能是对变量的引用,除非在php.ini中把allow_call_time_pass_reference设置为on
10. SQL中LEFT JOIN的含义是 自然左联接 如果tal_user记录了学生的姓名(name)和学好(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学好(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的各科总成绩,则可以用SQL语句
select u.name,sum(s.score) as sumscore from tal_user u left join tbl_score s on u.ID=s.ID group by u.ID
11. 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须 结束标记必须顶头写,不能有任何的缩进和空格,且在结束标记末尾要有分号。
1. 用PHP 打印出前一天的时间,打印格式是2007年5月10日22:21:21
//date()--格式化一个本地时间日期
//string date ( string format [, int timestamp])
//strtotime()--将任何的英文文本的日期时间描述解析为UNIX时间戳
echo date('Y年n月d日 H:i:s',strtotime('-1 day'));
echo date("Y年n月d日 H:i:s",time()-3600*24);//time()--返回当前的时间戳
//mktime()--取得一个日期的时间戳
//int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]])
echo date("Y年n月d日 H:i:s",mktime(date("H"),date("i"),date("s"),date("n"),
date("d")-1,date("Y")));
2. PHP代码如下:
$a = “hello”;
$b = &$a;
unset($b);
$b = “world”;
echo $a;
其结果是?hello
3. PHP代码如下:
$str = “cd”;
$$str = “landog”;
$$str. = “ok”;
echo $cd;
其结果是?landogok
4. 用PHP写一段代码,实现不使用第3个变量,交换$a、$b的值,$a、$b的初始值自己定。
$a = "1234";
$b = "abc";
echo "初始化时a=$a,b=$b";
$a = $a.$b;
$b = substr($a,0,(strlen($a)-strlen($b)));
$a = substr($a,strlen($b));
echo "
交换后的a=$a,b=$b";
5. javascript能否定义二维数组,如果不能逆如何解决?
Javascript不能定义二维数组,可以用arr[0] = new array()来解决
6. 假设a.html和b.html在同一个文件夹下面,用javascript实现当打开a.html五秒钟后,自动跳转到b.html页面。
7. 利用CSS样式表定义已访问的超链接字体大小为14pt,颜色为red。
8. 规律题,3、1、4、1、5、9、2、(6),请按规矩在括号内写出来下——表达式。
规律 3.1415926
9. 以下哪一句不会把John新增到users阵列?
$users[] = ‘john’;会
array_add($users,’john’);不会,函数array_add()无定义
array_push($users,’john’);会,array_push()—将一个或多个单元压入数组的末尾(入栈)
$users || = ‘john’;不会,语法错误
10. 下面的代码用来做什么?请解释。
$date = ‘08/26/2003’;
print ereg_replace(“([0-9]+)/([0-9]+)/([0-9]+)”,”[url=file://2///1///3]\\2/\\1/\\3[/url]”,$date);
这是把一个日期从MM/DD/YYYY的格式转为DD/MM/YYYY格式。
ereg_replace()—替换正则表达式。
如果pattern包含有括号内的字串,则replacement可以包含形如\\digit的字串,这些字串将被替换为数字表示的第几个括号内的字串;\\0则包含了字符串的整个内容。最多可以用九个字串。括号可以嵌套,此情形下以左圆括号来计算顺序。
11. 给你一行文字$string,你会如何编写一个正则表达式,把$string内的HTML标签出去?
$string = "
This is a test
";
$expression = "/<(.*?)>(.*?)<\>/";
echo preg_replace($expression, "\\2", $string);
简述如何得到当前执行路径,包括所得到参数。
echo "ht tp://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];或则 echo " http://".getenv("SERVER_NAME").getenv("REQUEST_URI");