当前位置:首页 > PHP教程 > php面试题 > 列表

一道简单的PHP笔试题(进阶必备)

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-09 15:03:59 浏览: 评论:0 

下文是一道简单的PHP笔试题(进阶必备)了,如果你准备去面试的话不防进入来参考这道笔试题吧。

一个前辈发了一道PHP笔试给我,题目大致如下

  1. $arr = array('1','2','3'); 
  2.  
  3. foreach($arr as $key=>&$val){} 
  4.  
  5. foreach($arr as $key=>$val){} 
  6.  
  7. var_dump($arr); 

问答案是什么?

看完我就懵了?根本不知道问题的考点在那里,看完两个foreach的区别在一个是取了地址,一个没有取地址,这样会影响结果吗?

结果输出的结果居然是如下:

  1. array
  2.   0 => string '1' (length=1) 
  3.   1 => string '2' (length=1) 
  4.   2 => &string '2' (length=1) 

表示打印出来的数据为什么会这样?“3”去哪儿了?造成这样的原因在于:&取地址符合.

用这种方式来说明foreach对数组的读取,比较直观,然后循环就是指针的移动读取,而且由于是&取值,则直接读的是地址而是不简单的赋值,所以当第一个循环结束后,$val跟$arr[2]指的是同一个地址,所以$val值如果改变了,$arr['2']值也跟着改变了.

如果,你运行一下如下代码:

  1. $arr = array('1','2','3');
  2. foreach($arr as $key=>&$val){} 
  3. //开源软件:phpfensi.com 
  4. foreach($arr as $key=>$val){ 
  5.  var_dump($arr); 
  6. var_dump($arr); 

你就能看到变化的过程,和得到之前结果的原因.

Tags: PHP笔试题 PHP进阶必备

分享到: