Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4185071
  • 博文数量: 601
  • 博客积分: 15410
  • 博客等级: 上将
  • 技术积分: 6884
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-16 08:11
个人简介

独学而无友,则孤陋而寡闻!

文章分类

全部博文(601)

文章存档

2020年(1)

2018年(4)

2017年(7)

2016年(42)

2015年(25)

2014年(15)

2013年(36)

2012年(46)

2011年(117)

2010年(148)

2009年(82)

2008年(37)

2007年(41)

分类: PHP

2016-07-18 16:41:46

现象:
  直接看代码:      

  1. <?php
  2.   $content = array(
  3.           array('image'=>'a.jpg'),
  4.           array('image'=>'b.jpg'),
  5.           array('image'=>'c.jpg')
  6.   );
  7.   if( is_array( $content )){
  8.           foreach( $content as &$v ){
  9.                   $v['sort'] = 1;
  10.           }
  11.   }

  12.   $arr = array(
  13.           's1'=>1,
  14.           's2'=>2,
  15.           's3'=>3
  16.   );

  17.   $arr2 = array();
  18.   foreach( $arr as $v ){
  19.           $arr2[] = $v;
  20.   }

  21.   var_dump( $content, $arr2 );

  22.   ?>
  说明:1、本例意图:先定义一个content,然后为content的每一个元素添加一个sort项。
                2、在写代码时,因为结构比较简单,直接使用了默认的&$v作为as的子句。
     3、后来又使用了一次foreach,同样使用了$v。
     4、结果……就出错了。

思考:你认为content[3]的结果是什么?
结果:注意红字部分。

  1. array(3) {
  2. [0]=>
  3. array(2) {
  4. ["image"]=>
  5. string(5) "a.jpg"
  6. ["sort"]=>
  7. int(1)
  8. }
  9. [1]=>
  10. array(2) {
  11. ["image"]=>
  12. string(5) "b.jpg"
  13. ["sort"]=>
  14. int(1)
  15. }
  16. [2]=>
  17. &int(3)
  18. }
  19. array(3) {
  20. [0]=>
  21. int(1)
  22. [1]=>
  23. int(2)
  24. [2]=>
  25. int(3)
  26. }

结论:

  如果使用了foreach的元素引用符&,一定要注意本次循环结束后,仍然维持了最后一次对$v的关系。





--- end ---

阅读(1828) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~