强化基础PHP试题(一)

近来为了公司内部项目要学习PHP,今天是我接触PHP的第3天~

用试题把关键知识强化一下~

1、在php中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量[①]中;而链接 到当前页面的URL记录在预定义变量[②]中 [1]$_SERVER['PHP_SELF'] [2]$_SERVER["HTTP_REFERER"]

 

2、数组函数 arsort 的作用是[①];语句 error_reporting(2047)的作用是[②]

[1]对数组进行逆向排序并保持索引关系 [2]All errors and warnings

 

3、以Apache模块的方式安装PHP,在文件http.conf中首先要用语句[①]动态装载PHP模块, 然后再用语句[②]使得Apache把所有扩展名为php的文件都作为PHP脚本处理。 [1]LoadModule php5_module "php5apache2.so" [2]AddType application/x-httpd-php-source .phps AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml

 

4、一个函数的参数不能是对变量的引用,除非在php.ini中把[①]设为on

[1]allow_call_time_pass_reference

 

5、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须[①]

结束标识符所在的行不能包含任何其它字符除";"

 

 

6 、写出下列代码的结果 : <?php $a="Hello World!"; $b=$a; print("/$b=$b<br>"); print('$a=$a<br>'); ?>

$b=Hello World!<br>$a=$a<br>


7 、写出下列代码输出结果 : <?php $a="First"; $b=&$a; $c=$a; $a="Second"; print("$a,$b,$c<br>"); ?>

Second,Second,First<br>


8 、写出下列代码输出结果 : <?php $a=2; $b="1.2SBC3"; $c="EFG"; $result1=$a.$b; $result2=$a*$b; $result3=$a*$c; print("$result1,$result2,$result3 <br>"); ?>

21.2SBC3,2.4,0<br>


9 、找出下列代码中的错误并修正 : <?php $a[0]=""Ryan; $b["value"]=785.9; $c["blue"][0]="Ada"; print("$a[0],$b["value"],$c["blue"][0] <br>"); ?>

 <?php $a[0]="Ryan"; $b["value"]=785.9; $c["blue"][0]="Ada"; print("$a[0]"."$b[value]"."{$c[blue][0]}"."<br>"); ?>

 

10、试述isset()和empty()的区别

isset() 测试变量是否存在 empty() 测试变量是否为空

 

11、请用尽可能少的语句实现对输入Email地址进行验证的功能

eregi('^[_a-z0-9]+(/.[_a-z0-9-]+)*@[a-z0-9]+(/.[a-z0-9-]+)*$',$emailaddress)

 

12、写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉)

/<script[^>].*?>.*?<//script>/si

 

13、语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是什么?如何避免同一文件被多次加载?

1.发生异常时include产生警告require产生致命错误 2.require_once()/include_once()

 

14、类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是哪些?

serialize() /unserialize()

 

15、写一个函数,能够遍历一个文件夹下的所有文件和子文件夹

/**
* 遍历目录,结果存入数组。支持php4及以上。php5以后可用scandir()函数代替while循环。
* @param string $dir
* @return array
*/
function my_scandir($dir)
{
$files = array();
if ( $handle = opendir($dir) ) {
while ( ($file = readdir($handle)) !== false ) {
if ( $file != “..” && $file != “.” ) {
if ( is_dir($dir . “/” . $file) ) {
$files[$file] = rec_scandir($dir . “/” . $file);
}else {
$files[] = $file;
}
}
}
closedir($handle);
return $files;
}
}

 

16、使用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);
}

 

17、使用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;
}
}

 

18、写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数

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;
}

 

19、提交了一个有8MB数据的表单,但程序只接收到4MB数据,可能的原因有哪些?

php.ini 2项设置

 

20、echo(),print(),print_r()的区别

echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print只能打印出简单类型变量的值(如int,string) print_r可以打印出复杂类型变量的值(如数组,对象)

 

21、如何获得访问者IP

$_SERVER['REMOTE_ADDR'];

 

22、utf-8转换成gbk的函数是?

iconv("gbk",""UTF-8,"我们"); mb_convert_encoding($str, "GBK", "UTF-8")

 

23、hp中分割字符串成数组的函数和连接数组成字符串的函分别有哪些?

explode() split() ;implode() join()

 

24、有三个php文件位于同一目录下,内容为 a.php <?php function fa() { echo “in Function A/n”; }?> b.php: <?php include ‘a.php’; ?> <?php function fb() { fa(); echo “in Function B/n”; } ?> c.php: <?php include ‘a.php’; ?> <?php include ‘b.php’; ?> <?php fa(); fb(); ?> 使用浏览器访问 c.php,请问是否存在问题。如果存在问题,请指出修正方法并写出浏览器查看效果如果不存在问题,请写出浏览器查看效果

 

开启错误输出的情况 ERROR:function already defined 未开启,白页 include换成include_once

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值