php面试官(10个值得深思的PHP面试问题)

wufei123 发布于 2023-12-03 阅读(471)

php菜鸟技术天地

视频教程商务合作请加微信客服:LetsFeng   请备注:商务合作面试中面试官问你啥问题,小编都给你整理在这里了。每天都会整理一份最接地气的面试题,希望能帮助到你!

同时带上一套视频资源教程【带你横扫PHP职场 全面解读PHP面试】,感谢你对本公众号的关注

,关注本公众号,回复:160705  即可获取。获取实战视频教程的,可以到这个网站里获取【http://www.mano100.c资源n】,只需158RMB,即可查看与下载全站视频教程

文章内容文章所罗列的问题虽然看似简单,但是每个背后都涵盖了一个或几个大家容易忽视的基础知识点,希望能够帮助到你的面试和平时工作1 关于弱类型$str1资源 = yabadabadoo;$str2 = yaba。

;if (strpos($str1,$str2)) {echo"\"" . $str1 . "\" contains \"" . $str2 .资源 "\"";} else {echo"\"" . $str1

. "\" does not contain \"" . $str2 . "\"";}正确运行的输出结果:"yabadabadoo" doe资源s not contain "yaba"strpos是返回字符串

str2在str1的位置,没有找到则返回false然而实际上这次返回了0而在if语句中0也被当作false,所以我们需要对false做类资源型判断,正确的代码如下:$str1 = yabadabadoo;$str2

= yaba;if (strpos($str1,$str2) !== false) {echo"\"" . $str1 . "资源\" contains \"" . $str2 . "\"";} else

{echo"\"" . $str1 . "\" does not contain \"" . $str2 . "\"";}需要资源注意的是我们使用了!==,在php 和 JS中=== !==相对== 更为严格需要要求数据类型一致

2 下面的输出结果会是怎样?$x = 5;echo$x;echo"";echo$x+++$x++;ec资源ho"";echo$x;echo"";echo$x---$x--;

echo"";echo$x;实际运行结果是511715关于 $x++ 和 $x--这个问题其实非常容易遇见,我们只需记住$x++使用最资源近的值,然后才自增运算符的优先级,++ 是明显高于 +,因此先执行++ 再执行 + 。

关于运算符的优先级,有的时候我们真的可以通过括号来让我们的程序更让人直观的了解,毕竟代码不光是用于执行的,有的时候资源或许团队的可读性也是提高效率的一种3 关于变量的引用;$a = 1;$b = &$a;$b

= "2$b";请问 $a 和 $b的值各位多少部分第一时间会想到 $a=1 $b=21,仔细一看 $b=&$资源a,这里$b是变量$a的引用而不是直接 赋值4 下面是true还是falsevar_dump(0123 == 123);。

var_dump(0123 == 123);var_dump(0123 ===资源 123);var_dump(0123 == 123);// false,PHP会默认把0123当作8进制来处理,实际转化为10进制就是83,显然这不是相等的。

var_dump(0123 == 123资源);// true这里php会非常有趣的将0123转换成一个数字而且默认去掉了前面的0也就是123==123var_dump(0123 === 123);// false

很显然上面的问题已经说过了数字资源和字符串类型不一致5 下面的代码有什么问题吗?输出会是什么,怎样修复它$referenceTable = array();$referenceTable[val1] = array

(1, 2);$re资源ferenceTable[val2] = 3;$referenceTable[val3] = array(4, 5);$testArray = array();$testArray = array_m资源erge($testArray, $referenceTable[

val1]);var_dump($testArray);$testArray = array_merge($testArray, $r资源eferenceTable[val2]);var_dump($testArray);

$testArray = array_merge($testArray, $referenceTable[val3]资源);var_dump($testArray);实际输出如下:array(2) { [0

]=> int(1) [1]=> int(2) }NULLNULL运行的时候你或许还能看到下面的警告Warning资源: array_merge(): Argument #2isnot an arrayWarning: array_merge(): Argument

#1isnot an arrayarray_merg资源e需要传入的参数都是数组,如果不是,则会返回null你可以这样修改$testArray = array_merge($testArray, (array。

)$referenceTable[val1])资源;var_dump($testArray);$testArray = array_merge($testArray, (array)$referenceTable[

val2]);var_dump($t资源estArray);$testArray = array_merge($testArray, (array)$referenceTable[val3]);var_dump($testArray);

资源$x应该是输出什么?$x = trueandfalse;var_dump($x);部分同学或许会第一时间想到false,实际上这里依旧是强调运算符的优先级,= 会比 and级别高点,因此等同下面的代码资源

$x = true;trueandfalse答案显而易见7 经过下面的运算 $x的值应该是多少?$x = 3 + "15%" + "$25"答案是18,PHP是会根据上下文实现类型的自动转换上面的代码资源我们可以这样理解,如果我们在与字符串进行数学运算,实际php会尽可能将字符串中的数组进行转换,如果是数字开头的话则转换成改数字比如"15%"会变成15,如果不是数字开头则会变成0;。

上面的运算类似下面资源 :$x = 3 + 15 + 08 运行下面的代码,$text 的值是多少?strlen($text)又会返回什么结果?$text = John ;$text[10] = Doe;上面代码执行完毕后资源

$text = "John D"(John后面会有连续的5个空格)strlen($text)会返回11$text[10] = "Doe"给某个字符串具体的某个位置具体字符时候,实际只会把D赋给$tex资源t

. 虽然$text才开始只有5个自负长度,但是php会默认填充空格这和别的语言有些差别9 下面的输出结果会是什么$v = 1;$m = 2;$l = 3;if( ($l > $m) > $v){ec资源ho。

"yes";}else{echo"no";}实际的输出是"no",只要仔细分析就不难得出$l>$m 会转换成1 ,则这个时候再和$m比较10 执行下面代码$x会变成什么值呢?$x = NULL;资源if (

0xFF == 255) {    $x = (int)0xFF;}实际的运行结果是$x=0而不是255.首先oxFF == 255我们好判断,会进行转换将16进制数字转换成10进制数字,0x资源ff -> 255.

PHP使用is_numeric_string 判断字符串是否包含十六进制数字然后进行转换但是$x = (int)0xFF;是否也会变成255呢?显然不是,将一个字符串进行强制类型转资源换实际上用的是convert_to_long。

,它实际上是将字符串从左向右进行转换,遇到非数字字符则停止因此0xFF到x就停止了所以$x=0以上是本文的全部内容,希望对大家的学习有帮助,觉得有用,有需资源要就支持一下吧助你面试成功 拿下高薪岗位微信公众号:。

程序员面试题A卷长按二维码关注

学习  |  交流  |  分享  |  文章

亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随资源时联系我。我非常乐意与您交流。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

宝骏汽车 新闻4781