- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                
PHP面试题试试看看你会不会也中招
这几道题是在德问上看到的,感觉挺有意思,拿来给 大家分享其中的陷阱,看看你会不会掉入其中。
第一题
复制代码代码如下:
$arr=array(O=gt;1,〃aa〃=gt;2, 3, 4); foreach($arras$key=gt;$val){ print ($key==//aa,,?5: $val):
输出结果是多少?如果的答案是1534就掉入陷阱了。 先看看这个数组最终形成的结构:
复制代码代码如下:
Array
(
[o]=gt;1
[aa]	=g t;2
=gt;3
[2]=gt;4
)
然后遍历每一个元素的k ey看等不等于aa,等于就用 5替代。当我告诉你答案是5534的时候,你会不会有点惊 讶!难道0等于aa吗?是的,0就等于aa,这道题重点
就考你这个。在PHP中两个值进行逻辑判断时,如果两个 值的类型不一致PHP会自动把右边的值转换到左边的类型, 然后再进行判断。因此aa转换整形等于0,自然也就等于 左边的0 了。你可以使用全等于避免这种该情况,也就是 如果你写成:
复制代码代码如下:
prin t ($key===a a,,?5: $val);
那么答案就是1534 了。
第二题
复制代码代码如下:
$i= If :
printf (〃%d \n〃,printf (〃%d〃,printf (〃%d〃,$i))):
输出结果是多少?如果你回答是11,或者111111就掉 入陷阱了。
先了解prin tf这个函数,prin tf不仅是打印函数,
它还有返回值。重点就在这
复制代码代码如下:
var_dump (pr intf (%d,$i));
你猜猜上面的结果是啥?先是pri ntf打印变量本身 11,然后printf会返回一个变量字符串长度的值,11有 两个字符,于是返回2,于是上面语句的执行结果等于: 复制代码代码如下:
Hint (2)
清楚了这一点以后,再回过来看上面的试题,按照优 先级,限制性深度printf函数,打印11,返回2。接着到 第二级printf函数,打印2,返回1。最后到第三层,直 接打印1,所以执行结果是11 21。
第三题
复制代码代码如下:
$a=3;
$b =5;
if($a=5||$b=7){
$a++;
$b++;
}
echo $a. 〃〃. $b;
执行结果是多少?如果你回答68or46or6 6,那你就掉 入陷阱了。
第一个陷阱,认为答案等于46。估计你粗心把 $a=5| | $b=7看成$a==5| |$b==7,这是新手常犯的错误。
第二个陷阱,认为答案等于68。你识破7$a=5| |$b=7 这个骗局,但你没有注意到,逻辑或里只要依次执行直到 某个表达式结果为true,表达式后边的就不再执行,$a=5 返回true,后边的$b=7就不执行了。
第三个陷阱,认为答案等于66。0K,你识破了逻辑或 的规则,于是$a =5执行,$b=7不执行,但是你没有考虑到 这里是逻辑表达式,返回给$a的值是要转换为布尔值的。
这样看。
所以经过以上三个陷阱,你应该知道答案是多少了, 其实$a等于true以后,echo$a输出就是1,$b值不变,结 果就是16。
第四题
复制代码代码如下:
$count =5;
function get_count () {
static$cou nt=0:
return $count++;
}
++$count:
get _count ();
ec hoget_count ():
执行结果是多少?如果你回答2,恭喜,你掉入陷阱了。
其实这道题主要考两点,第一点是static静态类型。 这种的值永远都是静态的,第一次调用声明等于0,并且自 增等于1。第二次调用,1再自增就等于2。但其实这里还 有一道陷阱,那就是++a与a++的区别,前++是先自增,后
++是先返回值再自增,所以结果等于1。 第五题
复制代码代码如下:
$a=c ount (〃567〃)+count (null ) +count (fal se); echo$a;
如果你回答3orl,恭喜,掉入陷阱了。
因为count (null )等于0,false也算一个值。所以
coun t (false)等于 1 o
                
原创力文档
                        

文档评论(0)