博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转] PHP常见的两个面试题
阅读量:7244 次
发布时间:2019-06-29

本文共 1048 字,大约阅读时间需要 3 分钟。

转载自: 

php面试中,有两个题目,很常见。但却很容易错。

第一题:

1 $a = 2;
2 $b = &$a;
3 uset($a);
4 echo $b;

问,会输出什么?

 

答案是 2 .

由此,可以衍生出来以下几种情况:

1 $a = 2;
2 $b = &$a;
3 uset($b);
4 echo $a;

这样呢?

答案还是 2 .

1 $a = 2;
2 $b = &$a;
3 $a = 3;
4 echo $b;

此时的$b输出为 3 .

1 $a = 2;
2 $b = &$a;
3 $b = 3;
4 echo $a;

这次的输出是: 3

& 在这里是“引用”的意思。这和C语言的指针引用是不一样的。在PHP里面只是 某个value对应的不同的名称而已。

举个不恰当的例子:比如你的宠物狗有个中文名 叫 “小强” ,“小强”就是你的宠物狗的 代号或者姓名。

有一天,当你的心血来潮,再给它起了个英文名叫“jack” 。OK,now,jack (这个可以看做是 小强的引用 ) 也是宠物狗了。

过了一段时间,你发现中国的狗狗嘛,干嘛要搞些洋名呢。于是,就把它的英文名给拿掉了(unset())。以后只叫他小强了。

也就是说,无论你把哪个名字拿掉了,这个狗狗都是存在的。都是你的宠物。你拿掉的(unset()的),只是名字而已。你并没有把你狗狗拿掉。

在PHP手册中,unset() 是指:销毁指定的变量。仅是变量而已。

但为什么当$a的值改变的时候,$b的值也会发生改变呢?因为这时,改变的是 “值” ,而不是 狗的姓名了。

比如说 小强 有一天出车祸了,腿断了。那jack呢?jack当然也是同样的。因为 实体 “狗狗” 发生了变化。所以,jack和小强都会发生变化。


第二题:

 

1 $a = 2;
2 $b = 3;
3 $c = &$a;
4 $c = 2;
5  if(  ($a=5)>0   ||  ($b=$a)>0 )
6  {
7     $a++;
8     $b++;
9  }
10 echo $a.'-'.$b.'-'.$c;

这道题 a b c的值会是多少呢?

输出的答案就是: 6-4-6

这个第二题,延续了第一题,对于引用的测试。另外一个就是 关于 逻辑运算符” || ”

在这里,if( ($a=5)>0 || ($b=$a)>0 ) 当($a=5)>0 是真后,($b=$a)>0是不会执行到的。所以 $b的值没有发生变化。

只是在后面 $b++的时候,变化了而已。

你可能感兴趣的文章
dom4j解析和生成XML文档
查看>>
键盘的扫描码虚拟码概念 常见Windows键盘按键虚拟码
查看>>
webcast
查看>>
PHP实现跨域自动登录
查看>>
java多线程系列(四)---ReentrantLock的使用
查看>>
PHP问题 —— Warning: PHP Startup: Unable to load dyna
查看>>
XMLHttpRequest Post参数
查看>>
1.2.方法的参数
查看>>
oracle 数据库(表)的逻辑备份与恢复
查看>>
Windows程序设计【001】第一个Windows程序
查看>>
5.1 priority_queue使用
查看>>
如何提高企业云ERP系统生产计划执行率
查看>>
php数据序列化测试
查看>>
errno的陷阱
查看>>
CentOS 7 主机名的修改
查看>>
troubleshooting shuffle reduce端缓冲大小以避免OOM
查看>>
全球1.7万台Mac电脑感染新恶意软件iWorm
查看>>
SpringMVC bean validator 自定义注解
查看>>
每周跑步锻炼
查看>>
Java反射:object is not an instance of declaring c...
查看>>