PHP常见的两个面试题
php面试中,有两个题目,很常见。但却很容易错。
第一题:
问,会输出什么?
答案是 2 .
由此,可以衍生出来以下几种情况:
这样呢?
答案还是 2 .
此时的$b输出为 3 .
这次的输出是: 3
& 在这里是“引用”的意思。这和C语言的指针引用是不一样的。在PHP里面只是 某个value对应的不同的名称而已。
举个不恰当的例子:比如你的宠物狗有个中文名 叫 “小强” ,“小强”就是你的宠物狗的 代号或者姓名。
有一天,当你的心血来潮,再给它起了个英文名叫“jack” 。OK,now,jack (这个可以看做是 小强的引用 ) 也是宠物狗了。
过了一段时间,你发现中国的狗狗嘛,干嘛要搞些洋名呢。于是,就把它的英文名给拿掉了(unset())。以后只叫他小强了。
也就是说,无论你把哪个名字拿掉了,这个狗狗都是存在的。都是你的宠物。你拿掉的(unset()的),只是名字而已。你并没有把你狗狗拿掉。
在PHP手册中,unset() 是指:销毁指定的变量。仅是变量而已。
但为什么当$a的值改变的时候,$b的值也会发生改变呢?因为这时,改变的是 “值” ,而不是 狗的姓名了。
比如说 小强 有一天出车祸了,腿断了。那jack呢?jack当然也是同样的。因为 实体 “狗狗” 发生了变化。所以,jack和小强都会发生变化。
-
- *第二题:
这道题 a b c的值会是多少呢?
输出的答案就是: 6-4-6
这个第二题,延续了第一题,对于引用的测试。另外一个就是 关于 逻辑运算符” || ”
在这里,if( ($a=5)>0 || ($b=$a)>0 ) 当($a=5)>0 是真后,($b=$a)>0是不会执行到的。所以 $b的值没有发生变化。
只是在后面 $b++的时候,变化了而已。