1. 写出如下程序的输出结果
<?php
$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';
$a6 = 'null';
$a7 = array();
$a8 = array(array());
echo empty($a1) ? 'true' : 'false'; //true
echo empty($a2) ? 'true' : 'false'; //true
echo empty($a3) ? 'true' : 'false'; //true
echo empty($a4) ? 'true' : 'false'; //true
echo empty($a5) ? 'true' : 'false'; //true
echo empty($a6) ? 'true' : 'false'; //false
echo empty($a7) ? 'true' : 'false'; //true
echo empty($a8) ? 'true' : 'false'; //false
3. 写出如下程序的输出结果
$test = 'aaaaaa';
$abc = & $test;
unset($test);
echo $abc; //aaaaaa
4. 写出如下程序的输出结果
$count = 5;
function get_count(){
static $count = 0;
return $count++;
}
echo $count; //5
++$count;
echo get_count(); //0
echo get_count(); //1
5. 写出如下程序的输出结果
$GLOBALS['var1'] = 5;
$var2 = 1;
function get(){
global $var2;
$var1 = 0;
return $var2++;
}
get();
echo $var1; //5
echo $var2; //2
6. 写出如下程序的输出结果
function get_arr($arr) {
unset($arr[0]);
}
$arr1 = array(1, 2);
$arr2 = array(1, 2);
get_arr(&$arr1);
get_arr($arr2);
echo count($arr1); //1
echo count($arr2); //2
7. 使用五种以上方式获取一个文件的扩展名
要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,
必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数
$file='dir/upload.image.jpg';
//方法1
$a=pathinfo($file);
echo $a['extension'];
//方法2
echo substr($file,strrpos($file,'.')+1);
//方法3
echo array_pop(explode('.',$file));
//方法4
echo preg_replace('/(.)*\.{1}/ix','',$file);
//方法5
echo strrchr($file,'.');
//方法6
echo strrev(substr(strrev($file),0,strpos(strrev($file),'.')));
8. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组
//冒泡排序
$array=array(3,45,2,21,5,2);
$max=count($array);
for($i=0;$i<$max;$i++){
for($j=$i+1;$j<$max;$j++){
if($array[$i]>$array[$j]){
$temp=$array[$i];
$array[$i]=$array[$j];
$array[$j]=$temp;
}
}
}
var_dump($array);
//快速排序
function quick_sort($array){
if (count($array) <= 1) return $array;
$key = $array[0];
$max=count($array);
$left_arr = array();
$right_arr = array();
for ($i=1; $i<$max; $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);
}
var_dump(quick_sort($array));
9. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
//顺序查找
$array=array(1,2,5,21,45);
$str=45;
function seq_sch($array,$str){
$max=count($array);
for($i=0;$i<$max;$i++){
if($str == $array[$i]) break;
}
return $i<$max?$i:'';
}
echo seq_sch($array,$str);;
//二分查找
function bin_sch($array,$k,$min,$max){
if ($min <= $max){
$mid = intval(($min+$max)/2);
if ($array[$mid] == $k){
return $mid;
}elseif ($k < $array[$mid]){
return bin_sch($array,$k,$min,$mid-1);
}else{
return bin_sch($array,$k,$mid+1,$max);
}
}
return '';
}
echo bin_sch($array,$str,0,count($array));
10. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数
$array=array(
array(23,4,5,6,7,82),
array(22,34,245,78),
array(2,14,25,72)
);
function array_sort($array){
if(!is_array($array)) return false;
$newArray = array();
foreach($array as $k => $a){
foreach($a as $v){
$newArray[]=$v;
}
}
sort($newArray);
return $newArray;
}
var_dump(array_sort($array));