几道入门PHP笔试题

来源:互联网 发布:索尼爱立信w980 软件 编辑:程序博客网 时间:2024/04/29 04:21
本文转自: heiyeluren的开源世界


一、基础题

1. 写出如下程序的输出结果

 1 <?
 2 $str1   =   null ;
 3 $str2   =   false
;
 4 echo   $str1 == $str2   ?   ' 相等 '   :   ' 不相等 '
;
 5

 6 $str3   =   ''
;
 7 $str4   =   0
;
 8 echo   $str3 == $str4   ?   ' 相等 '   :   ' 不相等 '
;
 9

10 $str5   =   0
;
11 $str6   =   ' 0 '
;
12 echo   $str5 === $str6   ?   ' 相等 '   :   ' 不相等 '
;
13 ?>

14
15


2. 写出如下程序的输出结果

 

 1 <?
 2 $a1   =   null ;
 3 $a2   =   false
;
 4 $a3   =   0
;
 5 $a4   =   ''
;
 6 $a5   =   ' 0 '
;
 7 $a6   =   ' null '
;
 8 $a7   =   array
();
 9 $a8   =   array ( array
());
10

11 echo   empty ( $a1 ?   ' true '   :   ' false '
;
12 echo   empty ( $a2 ?   ' true '   :   ' false '
;
13 echo   empty ( $a3 ?   ' true '   :   ' false '
;
14 echo   empty ( $a4 ?   ' true '   :   ' false '
;
15 echo   empty ( $a5 ?   ' true '   :   ' false '
;
16 echo   empty ( $a6 ?   ' true '   :   ' false '
;
17 echo   empty ( $a7 ?   ' true '   :   ' false '
;
18 echo   empty ( $a8 ?   ' true '   :   ' false '
;
19 ?>

20

 

3. 写出如下程序的输出结果

1 <?
2 $test   =   ' aaaaaa ' ;
3 $abc   =   &   $test
;
4 unset ( $test
);
5

6 echo   $abc
;
7 ?>

8
9


4. 写出如下程序的输出结果

 1 <? $count   =   5 ;
 2 function
 get_count(){
 3   static   $count   =   0
;
 4   return   $count ++
;
 5
}
 6

 7 echo   $count
;
 8 ++ $count
;
 9 echo
 get_count();
10 echo
 get_count();
11 ?>

12
13


5. 写出如下程序的输出结果

 1 <?
 2 $GLOBALS [ ' var1 ' =   5 ;
 3 $var2   =   1
;
 4 function
 get_value(){
 5   global   $var2
;
 6   $var1   =   0
;
 7   return   $var2 ++
;
 8
}
 9
get_value();
10

11 echo   $var1
;
12 echo   $var2
;
13 ?>

14
15


6. 写出如下程序的输出结果

 1 <?
 2 function  get_arr( $arr ){
 3   unset ( $arr [ 0
]);
 4
}
 5 $arr1   =   array ( 1 ,   2
);
 6 $arr2   =   array ( 1 ,   2
);
 7

 8 get_arr( & $arr1
);
 9 get_arr( $arr2
);
10

11 echo   count ( $arr1
);
12 echo   count ( $arr2
);
13 ?>

14
15


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描述冒泡排序和快速排序算法,对象可以是一个数组

 1 // 冒泡排序(数组排序) 
 2 function  bubble_sort( $array
 3

 4          $count   =   count ( $array
); 
 5          if  ( $count   <=   0 return   false

 6

 7          for ( $i = 0 $i < $count $i ++
){ 
 8                  for ( $j = $count - 1 $j > $i $j --
){ 
 9                          if  ( $array [ $j <   $array [ $j - 1
]){ 
10                                  $tmp   =   $array [ $j
]; 
11                                  $array [ $j =   $array [ $j - 1
]; 
12                                  $array [ $j - 1 =   $tmp

13
                        } 
14
                } 
15
        } 
16          return   $array

17

18

19 // 快速排序(数组排序) 

20 function  quick_sort( $array ) { 
21          if  ( count ( $array <=   1 return   $array

22

23          $key   =   $array [ 0
]; 
24          $left_arr   =   array
(); 
25          $right_arr   =   array
(); 
26

27          for  ( $i = 1 $i < count ( $array );  $i ++
){ 
28                  if  ( $array [ $i <=   $key

29                          $left_arr []  =   $array [ $i
]; 
30                  else
 
31                          $right_arr []  =   $array [ $i
]; 
32
        } 
33

34          $left_arr   =  quick_sort( $left_arr
); 
35          $right_arr   =  quick_sort( $right_arr
); 
36

37          return   array_merge ( $left_arr ,   array ( $key ) ,   $right_arr
); 
38

39

40


2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组

 1 // 二分查找(数组里查找某个元素) 
 2 function  bin_sch( $array ,   $low ,   $high ,   $k ){  
 3      if  ( $low   <=   $high
){  
 4          $mid   =   intval (( $low + $high ) / 2
);  
 5          if  ( $array [ $mid ==   $k
){  
 6              return   $mid
;  
 7         } elseif  ( $k   <   $array [ $mid
]){  
 8              return  bin_sch( $array ,   $low ,   $mid - 1 ,   $k
);  
 9         } else
{  
10              return  bin_sch( $array ,   $mid + 1 ,   $high ,   $k
);  
11
        }  
12
    }  
13      return   - 1
;  
14
}  
15

16 // 顺序查找(数组里查找某个元素) 

17 function  seq_sch( $array ,   $n ,   $k ){  
18      $array [ $n =   $k
;  
19      for ( $i = 0 $i < $n $i ++
){  
20          if ( $array [ $i ] == $k
){  
21              break
;  
22
        }  
23
    }  
24      if  ( $i < $n
){  
25          return   $i
;  
26     } else
{  
27          return   - 1
;  
28
    }  
29
}  
30

31


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

//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序

 1 function  array_sort( $arr ,   $keys ,   $order = 0 ) {
 2   if  ( ! is_array ( $arr
)) {
 3    return   false
;
 4
 }
 5   $keysvalue   =   array
();
 6   foreach ( $arr   as   $key   =>   $val
) {
 7    $keysvalue [ $key =   $val [ $keys
];
 8
 }
 9   if ( $order   ==   0
){
10    asort ( $keysvalue
);
11  } else
 {
12    arsort ( $keysvalue
);
13
 }
14   reset ( $keysvalue
);
15   foreach ( $keysvalue   as   $key   =>   $vals
) {
16    $keysort [ $key =   $key
;
17
 }
18   $new_array   =   array
();
19   foreach ( $keysort   as   $key   =>   $val
) {
20    $new_array [ $key =   $arr [ $val
];
21
 }
22   return   $new_array
;
23
}
24