知识大全 foreach使用引用注意的问题

Posted

篇首语:讨厌自己明明不甘平凡,却又不好好努力。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 foreach使用引用注意的问题相关的知识,希望对你有一定的参考价值。

  foreach 通过在 $value 之前加上 & 很容易就能修改数组的单元 如

PHP代码
  1. foreach($arr as &$value)   
  2.  $value  =  ;   
  3.   

  但这个用法也很容易造成错误 而且也不容易找 看例子更直截了当

PHP代码
  1. <?php   
  2. $arr = array( a b c );   
  3. $arr  = array( d   e   f );   
  4.   
  5. foreach($arr as &$value)//习惯用$value或$val   
  6.  $value  =  ;   
  7.   
  8.   
  9. //都处理完毕我们在页面模版输出 首先输出$arr   
  10. foreach($arr  as $value)//习惯用$value或$val   
  11.  //echo $value;   
  12.   
  13. //然后再这样输出 $arr;   
  14. foreach($arr as $value)//习惯用$value或$val   
  15.  echo $value   /n ;   
  16.   
  17. ?>  

  大家看看输出的结果是否和期望的一样 这里结果是

  a b b

  结果和我期待的不一样 这个就是引用引起的问题 在 foreach($arr as &$value) 数组遍历到最后 引用关系并没有断开 这是等同于 $value 与 $arr 的最后一个单元即 $arr[ ] 引用

  再到 foreach($arr as $value) $value的值一直随数组单元的值变 由于引用关系没有断开 $arr[ ] 的值也跟着变化 一直到$arr 遍历完 这是$value的值为f 所以$arr[ ]值也为f 这时$arr的值应为

  Array(    [ ] => a     [ ] => b     [ ] => f)

  这个和我们看到的最终输出结果又不一样 再到 foreach($arr as $value) 同理 这时 $arr[ ]的值也随着 $value 变化 当遍历到key为 即$arr[ ]时 $arr[ ]的值也变成 $arr[ ] 的值 即是 b 然后再遍历到key为 时 $arr[ ]的值又成了 $arr[ ] 的值 也就是 b 了 就是输出时的结果

PHP代码
  1. foreach($arr as &$value)   
  2.  $value  =  ;   
  3.   
  4. unset($value);  
cha138/Article/program/PHP/201311/21142

相关参考

知识大全 Java中引用,造型等问题解析

Java中引用,造型等问题解析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作者chris译 

知识大全 注意C++和C#引用的区别

注意C++和C#引用的区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#用多了最近又回到C

知识大全 foreach和yield

  foreach  foreach无需要知道集合中元素个数就可以迭代集合中的元素它其实是迭代器模式的一个包装就语言层面来说是while的另一种形式  usingSystem;  usingSyste

知识大全 C#中foreach基础使用方法

C#中foreach基础使用方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  昨天做老师的网站

知识大全 php foreach与for语句用法区别介绍

  //foreach  $tar=array(  =>东  =>西  =>南  =>北  =>东南  =>西南  =>东北  =>西北  =>南

知识大全 C#中foreach基础使用方法[1]

C#中foreach基础使用方法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  昨天做老师

知识大全 C#中foreach基础使用方法[2]

C#中foreach基础使用方法[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  就是像开头

知识大全 php遍历数组 list foreach each方法总结

在php中可以用来遍历数组的函数有很多如有for语句listeachforeach这四个函数这也是在php中遍历数组的几个主要的函数下面我来给大家介绍 foreach遍历数组我们在运用数组时

知识大全 jsp简单自定义标签的forEach遍历及转义字符

jsp简单自定义标签的forEach遍历及转义字符  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!l

知识大全 如何在smarty中增加类似foreach的功能自动加载数据

  在smarty中使用自定义插件来加载数据(见编写Smarty插件在模板中直接加载数据的详细介绍)在使用的时候还是感觉不够方便灵机一动就想写成类似foreach那种标签第一步在Smarty_Comp