您的位置:首页 > 职场人生

PHP面试题,附答案(1)

2016-05-25 16:32 661 查看
一、基础题

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

<?php

    $str1 = null;

    $str2 = false;

    echo $str1==$str2 ? '相等' : '不相等';

    $str3 = '';

    $str4 = 0;

    echo $str3==$str4 ? '相等' : '不相等';

    $str5 = 0;

    $str6 = '0';

    echo $str5===$str6 ? '相等' : '不相等';

?>


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

<?php

    $a1 = null;

    $a2 = false;

    $a3 = 0;

    $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';

    echo empty($a7) ? 'true' : 'false';

    echo empty($a8) ? 'true' : 'false';

?>

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

<?php

    $test = 'aaaaaa';

    $abc = & $test;

    unset($test);

    echo $abc;

?>


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

<?php

    $count = 5;

    function get_count(){

        static $count = 0;

        return $count++;

    }

    echo $count;

    ++$count;

    echo get_count();

    echo get_count();

?>

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

<?php

    $GLOBALS['var1'] = 5;

    $var2 = 1;

    function get_value(){

        global $var2;

        $var1 = 0;

        return $var2++;

    }

    get_value();

    echo $var1;

    echo $var2;

?>

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

<?php

    function get_arr($arr){

        unset($arr[0]);

    }

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

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

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

【答案】

(以下答案不一定是最好的,只是一个简单的参考)

一、基础题

1. 相等 相等 不相等

2. true true true true true false true false

3. aaaaaa    参考: http://my.oschina.net/banbo/blog/303306 里面的结论二

4. 5 0 1

5. 5 2

6. 1 2

7. 使用五种以上方式获取一个文件的扩展名

function get_ext1($file_name)[code]{

    
return
 strrchr(
$file_name
'.'
);

}

function get_ext2($file_name)[code]{

    
return
 substr(
$file_name
, strrpos(
$file_name
'.'
));

}

function get_ext3($file_name)[code]{

    
return
 array_pop(explode(
'.'
$file_name
));

}

function get_ext4($file_name)[code]{

    
return
 pathinfo(
$file_name
, PATHINFO_EXTENSION);

}

function get_ext5($file_name)[code]{

    
return
 strrev(substr(strrev(
$file_name
), 
0
, strpos(strrev(
$file_name
), 
'.'
)));

}


二、算法题

1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组

//冒泡排序(数组排序)

function bubble_sort($array)[code]{

    
$count 
= count(
$array
);

    
if
 (
$count 
<= 
0
return
 
false
;

    
for
(
$i
=
0
$i
<
$count
$i
++){

        
for
(
$j
=
$i
$j
<
$count
-
1
$j
++){

            
if
 (
$array
[
$i
] > 
$array
[
$j
]){

                
$tmp 
$array
[
$i
];

                
$array
[
$i
] = 
$array
[
$j
];

                
$array
[
$j
] = 
$tmp
;

            }

        }

    }

    
return
 
$array
;

}

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

function quick_sort($array) [code]{

    
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[/code]
            
$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
);

}

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

//二分查找(数组里查找某个元素)

function bin_sch($array, $low, $high, $k)[code]{

    
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)[code]{

    
$array
[
$n
] = 
$k
;

    
for
(
$i
=
0
$i
<
$n
$i
++){

        
if
(
$array
[
$i
]==
$k
){

            
break
;

        }

    }

    
if
 (
$i
<
$n
){

        
return
 
$i
;

    }
else
{

        
return
 -
1
;

    }

}

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

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

function array_sort($arr, $keys, $order=0) [code]{

    
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
;

}

 


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: