资讯专栏INFORMATION COLUMN

php面试题 汇集1

taowen / 1296人阅读

摘要:删除数组的最后一个元素输出删除的最后一个元素输出扩展名切割字符串函数查找字符串在另一字符串中最后一次出现的位置。

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

参考试题出处
1.基础



正确答案:相等 相等 不相等
注:== 表示值相等  ===表示值与类型都必须一样

原因是在PHP中变量是以C语言的结构体来存储的,空字符串和NULL,false都是以值为0存储的,其中这个结构体有个zend_uchartype;这样的成员变量,他是用来保存变量的类型的,而空字符串的类型是string,NULL的类型是NULL,false是boolean。

所以空字符串(""),false,NULL和0是值相等而类型不一样!

2.输出值

$a1 = null;
$a2 = false;
$a3 = 0;
$a4 = "";
$a5 = "0";
$a6 = "null";
$a7 = array();
$a8 = array(array());
echo "
"; echo empty($a1) ? "true" : "false"; echo "
"; echo empty($a2) ? "true" : "false"; echo "
"; echo empty($a3) ? "true" : "false"; echo "
"; echo empty($a4) ? "true" : "false"; echo "
"; echo empty($a5) ? "true" : "false"; echo "
"; echo empty($a6) ? "true" : "false"; echo "
"; echo empty($a7) ? "true" : "false"; echo "
"; echo empty($a8) ? "true" : "false"; 正确答案:true true true true true false true false 解释:$a1--$a5都是0 $a7是空数组

3.输出值

    $test = "aaaaaa";
    $abc = & $test;
    unset($test);
    echo $abc;
    
    正确答案:aaaaaa
    解释:& $test; 只是建立了一个通道指向值存储的地方  unset只能撤销$test的通道,但是
    对$abc没影响

4.输出值

$count = 5;
function get_count(){
    static $count = 0;
    return $count++;
}
echo $count;
++$count;
echo get_count();
echo get_count();

正确答案:501
解释:不用解释,局部变量,静态变量 后加

5.输出值

 $GLOBALS["var1"] = 5;
    $var2 = 1;
    function get_value(){
        global $var2;
        $var1 = 0;
        return $var2++;
    }
    get_value();//这里没有输出值 但是var2却在这里加了值
    echo $var1;
    echo $var2;
    
    正确答案:52
    解释:如上
    

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

1.substr   strrchr
$filename = "phpddt.jpg";
echo substr(strrchr($filename,"."),1);
//strrchr() 函数(在php中)查找字符在指定字符串中从左面开始的最后一次出现的位置,如果成功,返回该字符以及其后面的字符,如果失败,则返回 NULL。

2.explode array_pop//删除数组的最后一个元素
$filename = "phpddt.jpg";
$arr = explode(".",$filename);
echo array_pop($arr); //输出删除的最后一个元素

3.pathinfo 
$filename = "phpddt.jpg";
$info = pathinfo($filename);
echo $info["extension"];//输出扩展名

4.pathinfo
$filename = "phpddt.jpg";
echo pathinfo($filename,PATHINFO_EXTENSION);

5.substr //切割字符串  strrpos

$filename = "phpddt.jpg";
echo substr($filename,strrpos($filename,".")+1);
// strrpos() 函数查找字符串在另一字符串中最后一次出现的位置。
二、算法题
1.冒泡
function bubble_sort($array){
    $count = count($array);
    if ($count <= 0) return false;
    for($i=0; $i<$count; $i++){
        for($j=$i+1; $j<$count; $j++){
            if ($array[$i] > $array[$j]){
                $tmp = $array[$i];
                $array[$i] = $array[$j];
                $array[$j] = $tmp;
            }
        }
    }
    return $array;
}
2.快速  //思路:数组小于或等于一不用排序,取数组第一个和所有的值比较小于第一个的在归在左边数组$left_array 大于第一个的归于右边数组,两个数组递归主方法之后两边数据依次从小到大排列好,之后array_merge合并数组返回
function quick_sort($array) {
    if (count($array) <= 1) return $array;
    $key = $array[0];
    $left_arr = array();
    $right_arr = array();
    for ($i=1; $i
三.二分法查找数组元素
1.非递归  数组已排好序,知道数组的键值   查到就返回,没查到返回-1
function binary(&$arr,$low,$top,$target){
    while($low <= $top){
//由于php取商是有小数的,所以向下取整,不过也可不加,数组也会取整
        $mid = floor(($low+$top)/2);
        echo $mid."
"; if($arr[$mid]==$target){ return $arr[$mid]; }elseif($arr[$mid]<$target){ $low = $mid+1; }else{ $top = $mid-1; } } return -1; } $arr = [1,4,7,12,34,45]; $rest = binary($arr,0,6,12); print_r($rest);exit;
2.递归
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;
}

$arr = [1,4,7,12,34,45];
$rest = binary($arr,0,6,12);
print_r($rest);exit;
四.写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数

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

$data = array();
$data[] = array("volume" => 67, "edition" => 2);
$data[] = array("volume" => 86, "edition" => 1);
$data[] = array("volume" => 85, "edition" => 6);
$data[] = array("volume" => 98, "edition" => 2);
$data[] = array("volume" => 86, "edition" => 6);
$data[] = array("volume" => 67, "edition" => 7);

function array_sort($arr, $keys, $order=1) {
    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);
    }
    $new_array = array();
    foreach($keysvalue as $key=>$value) {
        $new_array[$key] = $arr[$key];
    }

    return $new_array;
}

$rest = array_sort($data,"volume",0);
echo "
";
print_r($rest);exit;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22274.html

相关文章

  • php面试 汇集2

    摘要:用打印出前一天的时间格式是的区别和不是一个函数,是一个语言结构只有一个参数可以输出多个参数,返回和只能打印出,不能打印出结构能打印出结构比如加粗文字 1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21 echo date(Y-m-d H:i:s,time()-60*60*24); $a = date(Y-m-d H:i:s, strtotime(-1 day));...

    BlackFlagBin 评论0 收藏0
  • 迷惑性的js面试汇集

    摘要:一般用于删除对象的属性,删除后其结果为但其不能删除变量。条件判断为假的情况有,,,,,未定义对象。函数声明写在运算符中,其为,但放在运算符中的函数声明在执行阶段是找不到的。将赋值给相当于故其指向 1、delete的用法 (function(x){ delete x; console.log(x); })(1) 答案为1。delete一般用...

    JinB 评论0 收藏0
  • Android-Java面试

    摘要:好不容易在月号这天中午点左右接到了来自阿里的面试电话。这里会不断收集和更新基础相关的面试题,目前已收集题。面试重难点的和的打包过程多线程机制机制系统启动过程,启动过程等等扫清面试障碍最新面试经验分享,此为第一篇,开篇。 2016 年末,腾讯,百度,华为,搜狗和滴滴面试题汇总 2016 年未,腾讯,百度,华为,搜狗和滴滴面试题汇总 各大公司 Java 后端开发面试题总结 各大公司 Jav...

    TalkingData 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<