几道经典容易错的php面试题

时间:2021-10-11 04:11:25

1.这道题问是输出的结果是什么?

*在echo输出的字符串中如果含有函数,则优先输出

 

function  test($a){
   echo  $a+10;

}

$b=10;
echo "function($b)".test($b);// 输出的结果是20function(10)

2.这道题考了运算的的优先级  逻辑运算符的优先级要大于算数运算符

/*
 * 1.考了优先级,||左边是是3  所以的呢    $b=3;这一句是没有执行的,$a是一个布尔型true
 * 2.true布尔型++,输出的还是1  (false  的话输出的还是false)   $b++ 输出的是1
 *所以结果是是输出的1,1
 * */
$c=flase;
$a=0;
$b=0;
if($a=3||$b=3){
    $a++;
    $b++;
}
echo $a.'<br>';
echo$b.'<br>';
echo  $c++;

3.这道题考数组,字符串,文件目录的操作的函数,比较全面

题目:请写一个函数将   "/ a/b/c/d/e.php"    和文件  "a/b/12/34/f.php "的相对路径写出来

取得文件目录路径函数:dirname()

去除左右两边的“/”函数:trim()

将字符串转化为数组的函数:explor()

将数组转化为字符串的函数:implode()

重复输出一个字符串的函数:str_repreat()

 

<?php
//用一个函数来输出$a $b的相对路径
$a='/a/b/c/d/e.php';
$b='/a/b/12/34/f.php';


function test($a,$b){
 try{
    //1.转化为数组
      $a=explode(trim(dirname($a),"/"),'/');
      $b=explode(trim(dirname($b),"/"),'/');
    //2.去除相同的部分
    for($i=0;$i<count($b);$i++){
        if($a["$i"]==$b["$i"]){
            unset($a["$i"]);
            unset($b["$i"]);
        }
        else{
            break;
        }
    }
  //3.组合
   return str_repeat('../',count($b)).implode('/',$a);
 }catch (ErrorException $e){
     echo $e->getMessage();
 }

}


echo  test($a,$b);

 

4.怎么解决一个大流量大型网站的访问量问题?

答:横向扩展web服务器

 

5.写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名

   例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php .php

<?php
header("Content-type:text/html;charset=utf8");

$a="http://www.sina.com.cn/abc/de/fg.php?id=1";

$arr=parse_url($a);
$file=basename($arr['path']);//这个函数有三个变量    [scheme]   [host]  [path]  [query]

$php=explode('.',$file);  

echo $php['1'];