正文
foreach 使用 引用& $value . 使用 unset($value)
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
1.知识点:
2. 例子2.1 例子1 .
$arr 引用循环, 赋值变量是 &$v ,第一个循环使用后 ,没有 使用unset($v) ,
$arr2 正常循环, 赋值变量是 $v , 第二个循环 也 使用 $v 这个变量
<?php $arr = array("a", "b", "c");
$arr2 = array("d", "e", "f"); 7 foreach($arr as &$v)
{
$v .= 1; } echo "<pre>";
var_dump($arr);
var_dump($arr2);17 foreach($arr2 as $v)
{
$v .= 2;
}
var_dump($arr);
var_dump($arr2); ?>
注意:红色部分:
1 .循环 $arr 后 , $arr的值 发生变化, 注意最后一个值是 引用.
2. 第二次循环$arr2; 可以看到 改变的是 $arr的值 ,最后一个值 从 c1 变成了 f2 , 同时 仍然保持着 引用 &string(2) "f2";
此时 $arr2 的值没有发生变化.
2.2 例子2
$arr1 引用循环 , 赋值变量是 &$v , 没有 unset($v)
$arr2正常循环 , 赋值变量是 &v2
<?php $arr = array("a", "b", "c");
$arr2 = array("d", "e", "f"); foreach($arr as &$v)
{
$v .= 1; } echo "<pre>";
var_dump($arr);
var_dump($arr2); foreach($arr2 as $v2)
{
$v2 .= 2;
}
var_dump($arr);
var_dump($arr2); ?>
此时$arr2 循环后 , $arr的值没有变化, 但是最后一个值 仍然保持引用, 同时 $arr2 的值 也没有发生变化.
-----------------------------
2.3 例子3.
$arr 引用循环, &$v, unset($v);
$arr2 正常循环, $v
<?php $arr = array("a", "b", "c");
$arr2 = array("d", "e", "f"); foreach($arr as &$v)
{
$v .= 1; } echo "<pre>";
var_dump($arr);
var_dump($arr2); unset($v); var_dump($arr);
var_dump($arr2); foreach($arr2 as $v)
{
$v .= '2';
}
var_dump($arr);
var_dump($arr2); ?>
第一个红色部分是 $arr 循环后 ,没有 使用 unset($v);
第二个红色部分 是 $arr 循环后, 使用了 unset($v);
第三个红色部分 是 $arr2 循环.
2.4 例子4
$arr 引用传值, &$v
$arr2 正常使用, $v, 但是 通过函数调用
<?php $arr = array("a", "b", "c");
$arr2 = array("d", "e", "f"); 7 foreach($arr as &$v)
{
$v .= 1; } echo "<pre>";
var_dump($arr);
var_dump($arr2); function testArr2($array)
{
19 foreach ($array as $v) {
$v .= 2;
} return $array;
} var_dump($arr);
var_dump($arr2);
var_dump(testArr2($arr2)); ?>
测试 : 两次循环后 $arr 的值 是相同的, 当保持着 引用
总结:
使用 &$v之后, 最好使用 unset($v) 删掉 ;
或者 下一次 循环的时候 不要 使用 $v, 可以使用 $v2, $v3.
或者 参见 2-4 ,通过函数调用.
3.使用: //2: 分析 页面:
public function fxService()
{ //1: 取出分析
$chart = array(); $AnalysisModel = new AnalysisModel();
$where["where"] = " isHidden = 0 order by orderBy asc, id asc ";
$data = $AnalysisModel->getDataList($where); foreach ($data["rows"] as $k => $model)
{
$cell = array();
$cell["id"] = $model->id;
$cell["chart"] = $model->chart;
$cell["title"] = $model->title; $chart[] = $cell;
}22 foreach ($chart as $k => &$v)
{
if ($v["chart"] == 0)
{
// echo "条形图";
//条形图:
28 $v["content"] = $this->txChartService($v["id"]);
}
else
{
// echo "雷达图";
//雷达图:
34 $v["content"] = $this->ldChartService($v["id"]);
} } //去除引用的变量值$v
40 unset($v); // echo "<pre>";
// var_dump($chart); //返回数据:
$parameter = array();
$parameter["chart"] = $chart; $this->display("Home/iframe/fx.php", $parameter);
}
foreach 使用 引用& $value . 使用 unset($value)的更多相关文章- foreach中引用 的问题
在工作中遇到 关于 php foreach 引用的一个问题 简单来说,如下代码 $arr=array('a','b','c' ,'d'); foreach($arr as $k=>&$v ...
- PHP中foreach有关引用的问题
软件开发的过程中,细节处理非常重要,说得大一点就是细节决定成败,别人不懂的地方,你懂,别人没注意到的细节,你注意到了,这就是你胜出对方的地方,这样就体现出了你的价值. 下面是几个foreach循环中引 ...
- php foreach 传值还是传引用
From: http://my.oschina.net/guomingliang/blog/215457 php 中遍历一个array时可以使用for或foreach,foreach的语法为:fore ...
- PHP foreach引用&;
将以下代码打印 $variable = ['a', 'b', 'c']; foreach ($variable as $key => &$value) { } foreach ($var ...
- PHP foreach 引用 &;
以前用foreach,总喜欢在第二次遍历时改变value的拼写,比如 $x = array("a", "b", "c"); foreach ...
- java foreach 循环原理
java foreach 语法是在jdk1.5时加入的新特性,主要是当作for语法的一个增强,那么它的底层到底是怎么实现的呢?因为面试时被问到,所以在这边做一个记录. 首先来看看foreach能够使用 ...
- foreach 使用&引用赋值要注意的问题
<?php $arr = array('a', 'b', 'c'); $arr2 = array('d', 'e', 'f'); foreach($arr as &$value){ $v ...
- Java的四种引用类型之弱引用
先说结论: 首先,Java中有四种引用类型:强引用.软引用.弱引用.虚引用.-- 在 Java 1.2 中添加的,见 package java.lang.ref; . 其次,这几个概念是与垃圾回收有关 ...
- 数组最后一个元素的 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁
数组最后一个元素$arr = array( 1 , 2 , 3 , 4 );foreach ( $arr as & $value ) { $value = $value ...
随机推荐- Spring 使用JSTL标签显示后台数据
1. 先上项目结构图,其中config包下的代码文件参见前一篇博客 http://www.cnblogs.com/njust-ycc/p/6123505.html 引包: 2. 主要代码 (1)U ...
- svn代码回滚命令
代码回滚提交: 比如要把73回滚到68 svn merge -r 73:68 http://my.repository.com/my/project/trunk 然后commit就行了 svn com ...
- css 雪碧图的制作
很多网站其实都用了雪碧图,确实方便了制作,以前以为这种小图标,都是一个一个图片呢(笑) 效果图如下: 代码如下: <html> <head lang="en"&g ...
- 【转】基于RMAN实现坏块介质恢复(blockrecover)
本文转自:乐沙弥的世界 对于物理损坏的数据块,我们可以通过RMAN块介质恢复(BLOCK MEDIA RECOVERY)功能来完成受损块的恢复,而不需要恢复整个数据库或所有文件来修复这些少量受损的数据 ...
- Java 实现享元(Flyweight)模式
/** * 字母 * @author stone * */ public class Letter { private String name; public Letter(String name) ...
- MySQL flashback 功能
1. 简介 mysqlbinlog flashback(闪回)用于快速恢复由于误操作丢失的数据.在DBA误操作时,可以把数据库恢复到以前某个时间点(或者说某个binlog的某个pos).比如忘了带wh ...
- svn checkout 指定目录(转)
http://www.uqugu.com/blog/article/svn-checkout-specified-forder/ svn有时只想检出指定目录,对于其他的大文件目录则不想检出,如不想检出 ...
- dongle --NFC
A dongle is a small piece of hardware that attaches to a computer, TV, or other electronic device in ...
- 每日英语:The Upside of Favoritism
As the head of the entertainment division of a major public-relations firm in New York, Janelle was ...
- js中 var functionName = function() {} 和 function functionName() {} 两种函数声明的区别 (译)
stackOverflow中看到了很久以前问的一个关于函数声明的问题,问题对函数剖析的特别深.这里翻译了一下组织成一篇小博文,加深一下对这两种声明方式的印象.虽是老调重弹,但是只要能帮助理解问题,不管 ...
//2: 分析 页面:
public function fxService()
{ //1: 取出分析
$chart = array(); $AnalysisModel = new AnalysisModel();
$where["where"] = " isHidden = 0 order by orderBy asc, id asc ";
$data = $AnalysisModel->getDataList($where); foreach ($data["rows"] as $k => $model)
{
$cell = array();
$cell["id"] = $model->id;
$cell["chart"] = $model->chart;
$cell["title"] = $model->title; $chart[] = $cell;
}22 foreach ($chart as $k => &$v)
{
if ($v["chart"] == 0)
{
// echo "条形图";
//条形图:
28 $v["content"] = $this->txChartService($v["id"]);
}
else
{
// echo "雷达图";
//雷达图:
34 $v["content"] = $this->ldChartService($v["id"]);
} } //去除引用的变量值$v
40 unset($v); // echo "<pre>";
// var_dump($chart); //返回数据:
$parameter = array();
$parameter["chart"] = $chart; $this->display("Home/iframe/fx.php", $parameter);
}
- foreach中引用 的问题
在工作中遇到 关于 php foreach 引用的一个问题 简单来说,如下代码 $arr=array('a','b','c' ,'d'); foreach($arr as $k=>&$v ...
- PHP中foreach有关引用的问题
软件开发的过程中,细节处理非常重要,说得大一点就是细节决定成败,别人不懂的地方,你懂,别人没注意到的细节,你注意到了,这就是你胜出对方的地方,这样就体现出了你的价值. 下面是几个foreach循环中引 ...
- php foreach 传值还是传引用
From: http://my.oschina.net/guomingliang/blog/215457 php 中遍历一个array时可以使用for或foreach,foreach的语法为:fore ...
- PHP foreach引用&;
将以下代码打印 $variable = ['a', 'b', 'c']; foreach ($variable as $key => &$value) { } foreach ($var ...
- PHP foreach 引用 &;
以前用foreach,总喜欢在第二次遍历时改变value的拼写,比如 $x = array("a", "b", "c"); foreach ...
- java foreach 循环原理
java foreach 语法是在jdk1.5时加入的新特性,主要是当作for语法的一个增强,那么它的底层到底是怎么实现的呢?因为面试时被问到,所以在这边做一个记录. 首先来看看foreach能够使用 ...
- foreach 使用&引用赋值要注意的问题
<?php $arr = array('a', 'b', 'c'); $arr2 = array('d', 'e', 'f'); foreach($arr as &$value){ $v ...
- Java的四种引用类型之弱引用
先说结论: 首先,Java中有四种引用类型:强引用.软引用.弱引用.虚引用.-- 在 Java 1.2 中添加的,见 package java.lang.ref; . 其次,这几个概念是与垃圾回收有关 ...
- 数组最后一个元素的 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁
数组最后一个元素$arr = array( 1 , 2 , 3 , 4 );foreach ( $arr as & $value ) { $value = $value ...
随机推荐- Spring 使用JSTL标签显示后台数据
1. 先上项目结构图,其中config包下的代码文件参见前一篇博客 http://www.cnblogs.com/njust-ycc/p/6123505.html 引包: 2. 主要代码 (1)U ...
- svn代码回滚命令
代码回滚提交: 比如要把73回滚到68 svn merge -r 73:68 http://my.repository.com/my/project/trunk 然后commit就行了 svn com ...
- css 雪碧图的制作
很多网站其实都用了雪碧图,确实方便了制作,以前以为这种小图标,都是一个一个图片呢(笑) 效果图如下: 代码如下: <html> <head lang="en"&g ...
- 【转】基于RMAN实现坏块介质恢复(blockrecover)
本文转自:乐沙弥的世界 对于物理损坏的数据块,我们可以通过RMAN块介质恢复(BLOCK MEDIA RECOVERY)功能来完成受损块的恢复,而不需要恢复整个数据库或所有文件来修复这些少量受损的数据 ...
- Java 实现享元(Flyweight)模式
/** * 字母 * @author stone * */ public class Letter { private String name; public Letter(String name) ...
- MySQL flashback 功能
1. 简介 mysqlbinlog flashback(闪回)用于快速恢复由于误操作丢失的数据.在DBA误操作时,可以把数据库恢复到以前某个时间点(或者说某个binlog的某个pos).比如忘了带wh ...
- svn checkout 指定目录(转)
http://www.uqugu.com/blog/article/svn-checkout-specified-forder/ svn有时只想检出指定目录,对于其他的大文件目录则不想检出,如不想检出 ...
- dongle --NFC
A dongle is a small piece of hardware that attaches to a computer, TV, or other electronic device in ...
- 每日英语:The Upside of Favoritism
As the head of the entertainment division of a major public-relations firm in New York, Janelle was ...
- js中 var functionName = function() {} 和 function functionName() {} 两种函数声明的区别 (译)
stackOverflow中看到了很久以前问的一个关于函数声明的问题,问题对函数剖析的特别深.这里翻译了一下组织成一篇小博文,加深一下对这两种声明方式的印象.虽是老调重弹,但是只要能帮助理解问题,不管 ...
1. 先上项目结构图,其中config包下的代码文件参见前一篇博客 http://www.cnblogs.com/njust-ycc/p/6123505.html 引包: 2. 主要代码 (1)U ...
代码回滚提交: 比如要把73回滚到68 svn merge -r 73:68 http://my.repository.com/my/project/trunk 然后commit就行了 svn com ...
很多网站其实都用了雪碧图,确实方便了制作,以前以为这种小图标,都是一个一个图片呢(笑) 效果图如下: 代码如下: <html> <head lang="en"&g ...
本文转自:乐沙弥的世界 对于物理损坏的数据块,我们可以通过RMAN块介质恢复(BLOCK MEDIA RECOVERY)功能来完成受损块的恢复,而不需要恢复整个数据库或所有文件来修复这些少量受损的数据 ...
/** * 字母 * @author stone * */ public class Letter { private String name; public Letter(String name) ...
1. 简介 mysqlbinlog flashback(闪回)用于快速恢复由于误操作丢失的数据.在DBA误操作时,可以把数据库恢复到以前某个时间点(或者说某个binlog的某个pos).比如忘了带wh ...
http://www.uqugu.com/blog/article/svn-checkout-specified-forder/ svn有时只想检出指定目录,对于其他的大文件目录则不想检出,如不想检出 ...
A dongle is a small piece of hardware that attaches to a computer, TV, or other electronic device in ...
As the head of the entertainment division of a major public-relations firm in New York, Janelle was ...
stackOverflow中看到了很久以前问的一个关于函数声明的问题,问题对函数剖析的特别深.这里翻译了一下组织成一篇小博文,加深一下对这两种声明方式的印象.虽是老调重弹,但是只要能帮助理解问题,不管 ...