坑人PHP面试题的深入分析
内容摘要
这篇文章主要为大家详细介绍了坑人PHP面试题的深入分析,具有一定的参考价值,可以用来参考一下。
文章正文
这篇文章主要为大家详细介绍了坑人PHP面试题的深入分析,具有一定的参考价值,可以用来参考一下。
这几道题是在德问上看到的,感觉挺有意思,拿来给大家分享其中的陷阱,看看你会不会掉入其中。
第一题
代码如下:
1 2 3 4 5 6 7 8 9 10 | <code> $arr = array (0=>1, "aa" =>2, 3, 4); foreach ( $arr as $key => $val ){ print ( $key == "aa" ? 5 : $val ); }</code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <code> Array ( [0] => 1 [aa] => 2 [1] => 3 [2] => 4 )</code> |
代码如下:
1 2 | <code> print ( $key === "aa" ? 5 : $val );</code> |
第二题
代码如下:
1 2 3 4 | <code> $i = '11' ; printf( "%d\n" ,printf( "%d" ,printf( "%d" , $i )));</code> |
代码如下:
1 2 | <code> var_dump(printf( "%d" , $i ));</code> |
代码如下:
1 | <code>11int(2)</code> |
第三题
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <code> $a = 3; $b = 5; if ( $a = 5 || $b = 7) { $a ++; $b ++; } echo $a . " " . $b ;</code> |
第二个陷阱,认为答案等于 6 8。 你识破了 $a = 5 || $b = 7 这个骗局,但你没有注意到,逻辑或里只要依次执行直到某个表达式结果为true,表达式后边的就不再执行,$a = 5 返回true,后边的$b=7就不执行了。第三个陷阱,认为答案等于 6 6。 OK,你识破了 逻辑或的规则,于是$a=5执行,$b=7不执行,但是你没有考虑到这里是逻辑表达式,返回给$a的值是要转换为布尔值的。这样看。
所以经过以上三个陷阱,你应该知道答案是多少了,其实 $a等于true以后,echo $a 输出就是1 ,$b值不变,结果就是 1 6 。
第四题
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <code> $count = 5; function get_count() { static $count = 0; return $count ++; } ++ $count ; get_count(); echo get_count();</code> |
第五题
代码如下:
1 2 3 4 | <code> $a = count ( "567" ) + count (null) + count (false); echo $a ;</code> |
如果你回答 3 or 1,恭喜,掉入陷阱了。因为count(null)等于0,false也算一个值。所以count(false)等于1。
注:关于坑人PHP面试题的深入分析的内容就先介绍到这里,更多相关文章的可以留意
代码注释