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)的更多相关文章

  1. foreach中引用 的问题

    在工作中遇到 关于 php foreach 引用的一个问题 简单来说,如下代码 $arr=array('a','b','c' ,'d'); foreach($arr as $k=>&$v ...

  2. PHP中foreach有关引用的问题

    软件开发的过程中,细节处理非常重要,说得大一点就是细节决定成败,别人不懂的地方,你懂,别人没注意到的细节,你注意到了,这就是你胜出对方的地方,这样就体现出了你的价值. 下面是几个foreach循环中引 ...

  3. php foreach 传值还是传引用

    From: http://my.oschina.net/guomingliang/blog/215457 php 中遍历一个array时可以使用for或foreach,foreach的语法为:fore ...

  4. PHP foreach引用&

    将以下代码打印 $variable = ['a', 'b', 'c']; foreach ($variable as $key => &$value) { } foreach ($var ...

  5. PHP foreach 引用 &

    以前用foreach,总喜欢在第二次遍历时改变value的拼写,比如 $x = array("a", "b", "c"); foreach ...

  6. java foreach 循环原理

    java foreach 语法是在jdk1.5时加入的新特性,主要是当作for语法的一个增强,那么它的底层到底是怎么实现的呢?因为面试时被问到,所以在这边做一个记录. 首先来看看foreach能够使用 ...

  7. foreach 使用&引用赋值要注意的问题

    <?php $arr = array('a', 'b', 'c'); $arr2 = array('d', 'e', 'f'); foreach($arr as &$value){ $v ...

  8. Java的四种引用类型之弱引用

    先说结论: 首先,Java中有四种引用类型:强引用.软引用.弱引用.虚引用.-- 在 Java 1.2 中添加的,见 package java.lang.ref; . 其次,这几个概念是与垃圾回收有关 ...

  9. 数组最后一个元素的 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁

    数组最后一个元素$arr  = array( 1 ,  2 ,  3 ,  4 );foreach ( $arr  as & $value ) {     $value  =  $value  ...

随机推荐

  1. postman(九):postman接口测试脚本集成到jenkins

    本篇的目的是实现使用jenkins远程执行postman接口测试脚本 准备工作:一台linux服务器(可以用虚拟机搭建一个),linux服务器上安装好node.js.newman,部署好jenkins ...

  2. 第一章 Java语言概述1

    1.人机交互有两种方法:一种是图形化界面,一种是命令行方式 2.如何打开命令行:开始-在运行命令行中输入cmd 3.常用的DOS命令: dir(directory):列出当前目录下文件及文件夹 md( ...

  3. python 学习笔记 5 ----> dive into python 3

    字符串 文本:屏幕上显示的字符或者其他的记号 计算机认识的东西:位(bit)和字节(byte) 文本的本质:某种字符编码方式保存的内容. 字符编码:一种映射(显示的内容  ----> 内存.磁盘 ...

  4. 蓝鲸DevOps深度解析系列(2):蓝盾流水线初体验

    关注嘉为科技,获取运维新知 前面一篇文章<蓝鲸DevOps深度解析系列(1):蓝盾平台总览>,我们总览了蓝鲸DevOps平台的背景.应用场景.特点和能力: ​ 接下来我们继续解析蓝盾平台的 ...

  5. HeadFirstPython学习笔记——OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。

    1.文件构成如下 2.运行服务器时报错 OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试. 解决方法:更换端口 3.Python的CGI跟踪术 在 ...

  6. python 近义词库包 synonyms 的使用

    最近接触到nlp的一些东西,需要找出中文词语的近义词,也接触到了一个synonyms 的库, 分词,去停用词,word2vector  等 一些列nlp 的操作,还可以输出中文词语的近义词 https ...

  7. Mock.js常用占位符——Basic、Date、Color

    1. Basic 在通过占位符引用方法时, Mock.mock('@boolean')  : Mock.mock('@boolean()')  都可以调用方法 方法 含义 使用举例 Random.bo ...

  8. 搭建iview环境

    一.最快捷方式安装: $ npm install iview --save 二.一般在 webpack 入口页面 main.js 中如下配置: import Vue from 'vue'; impor ...

  9. js给图层添加动态样式

    需求:需要在视窗内随意点击对应位置,图层从上到下匀速运动到指定位置 html <img id="moveDot" class="moveDot" src= ...

  10. IPFS扫盲

    第二届深圳区块链技术与应用大会暨展览会,深圳区块链存储与IPFS技术应用大会暨展览会于2019年4月9日在深圳会展中心6号馆举行.那么这个IPFS是什么?和区块链有什么关系?有什么用?又怎么用呢?接下 ...