几道经典容易错的php面试题
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'];