foreach  引用传值&

php 怎么在foreach中循环数组   ,的时候添加元素跟值

foreach($arr as $key => &$vo){
//注意,由于上面遍历的时候写了地址传值符&,
//所以下面可以直接给$vo 赋值;如果不写&符号,下面这样写是没有任何意义的
$vo['name'] = '张三';
$vo['age'] = '20';
}
//这样我们就完成了对数组元素添加name属性和age属性了,
在上面的写法中,如果我们不填写&符号,还可以使用下面的办法来添加属性,那就是
$arr[$key]['name'] = '张三';
$arr[$key]['age'] = '20';

举例子:将data1中的1,4,分别插入data2的两个数组中去

$data1 = Array(1,4);
$data2 = array(
array('北京'),
array('黑龙江')
);

最终效果:

Array (
  [0] => Array (
    [0] => 北京
    [number] => 1
  )   [1] => Array (
    [0] => 黑龙江
    [number] => 4
  ) )

  

  使用上面的方法;

foreach ($data2 as $k=>$v) {
$v['number'] = $data1[$k];
}

这里没有用&引用符,所以没效果,最终打印的结果是:打印data2没变化,只有打印$v才显示下面的结果

print_r($v);die; // 上面的不加&连接符,相当于把循环的结果,最终付给了$v的这个数组变量了,跟data2没有关系;他们之间没有连接的桥梁,各式各的,没有关联。
Array
(
[0] => 黑龙江
[number] => 4
)

如果要有效果,加上&符号,意思就是把遍历出来的data2里面的两个数组,每一个都加上number这个元素;相当于一个把data2里的值,跟number连接起来的作用,相当于一座桥梁,

foreach ($data2 as $k=>&$v) {
$v['number'] = $data1[$k];
}

或者不用引用符,直接用  data[$k]['num']

foreach ($data2 as $k => $v) {
$data2[$k]['num'] = $data1[$k];
}

  结果:

Array
(
[0] => Array
(
[0] => 北京
[num] => 1
) [1] => Array
(
[0] => 黑龙江
[num] => 4
) )

  

给一个数组添加一个元素的其中之一的方法就是下面

$arr = array('北京');
$arr['aa'] = 55;

结果:给arr添加一个aa键名,值为55

Array
(
[0] => 北京
[aa] => 55
)

foreach 引用传值&的更多相关文章

  1. 从一次面试经历谈PHP的普通传值与引用传值以及unset

    关于这个概念一般都会在PHP的第一堂课说变量的时候给介绍,并且我以前还给其他PHPer介绍这个概念.但是作为一个工作一段时间的PHPer的我,竟然在面试的时候一下子拿不定主意最后还答错了,很觉得丢脸( ...

  2. php普通传值和引用传值 (相当通俗易懂的一篇讲解)

    首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 普通传值,传值以后,是不同的地址名称,指向不同的内存实体; 引用传值,传引用后,是不同的地址名称,但都指向同一 ...

  3. PHP的普通传值与引用传值以及unset

    首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 普通传值,传值以后,是不同的地址名称,指向不同的内存实体; 引用传值,传引用后,是不同的地址名称,但都指向同一 ...

  4. php foreach引用赋值

    在写代码时发现php foreach引用赋值会导致意外的行为. 代码示例: <?php $arr = array('a','b','c'); foreach($arr as $k=>&am ...

  5. Java基础必备 -- 堆栈、引用传值、垃圾回收等

     在Java中,对象作为函数参数的传递方式是值传递还是引用传递?String str = "abc" 与 String str = new String("abc&quo ...

  6. PHP和CS的引用传值

    PHP的引用传值 function change_value($num){ $num+=2; } $age = 3; change_value(&$age); echo $age; CS的引用 ...

  7. Python引用传值总结

    Python函数的参数传值使用的是引用传值,也就是说传的是参数的内存地址值,因此在函数中改变参数的值,函数外也会改变. 这里需要注意的是如果传的参数类型是不可改变的,如String类型.元组类型,函数 ...

  8. PHP引用传值规范问题

    在我上一篇:  shopnc 商城源码阅读笔记--开篇概述   中,遇到了一个PHP引用传值导致的错误,情况大致如下: 在我查阅PHP官方文档  的中文版的时候   http://php.net/ma ...

  9. php引用传值

    isset();判读值是否值在 unset();取消变量 <?php$a=array("a","b","c");$b=$a;$b[2] ...

随机推荐

  1. JDK的动态代理-----为接口进行代理

    JDK的动态代理是必须掌握的,动态代理的好处就不用我多说了吧 :) 小弟最近在研究mybatis的源码实现,就开始了解mybatis的Mapper代理机制,为什么接口不用实现类也能代理? 好了,废话不 ...

  2. jQuery与vue分别实现超级简单的绿色拖动验证码功能

    jquery的绿色拖动验证功能 在网上看到了一个这样的问题:那种像拖动滑块匹配图形的验证方式是怎么实现的?. 突然想到实现一个简单绿色拖动验证码的功能,在网上搜了下,有一个用jquery实现的该功能代 ...

  3. 实现DevOps需要的工具

    硬性要求:工具上的准备 代码管理(SCM):GitHub.GitLab.BitBucket.SubVersion 构建工具:Ant.Gradle.maven 自动部署:Capistrano.CodeD ...

  4. 照葫芦画瓢系列之Java --- Maven的介绍和安装

    一.Maven是什么? Maven 是一个项目管理工具.它负责管理项目开发过程中的几乎所有的东西. 版本 maven有自己的版本定义和规则 构建 maven支持许多种的应用程序类型,对于每一种支持的应 ...

  5. Android为TV端助力 deep link(深度链接)与自定义协议!

    此自定义仅供参考! 首先打开androidManifest.xml 在MainActivity中添加如下内容: <activity android:name=".MainActivit ...

  6. WPF控件库:文字按钮的封装

    需求:封装按钮,按钮上面只显示文字.在鼠标移上去.鼠标点击按钮.以及将按钮设为不可用时按钮的背景色和前景色需要发生变化 实现:继承Button类,封装如下6个属性: #region 依赖属性 /// ...

  7. 虚拟现实的头戴式设备的视野(FOV)原理

    本文原址https://www.cnblogs.com/zhangmiao14/p/5836664.html. 对于VR,它做得最好的就是它对生活的变化,有一些关键因素需要调整的恰如其分.如果做得正确 ...

  8. MySQL 约束、表连接、表关联、索引

    一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性. 外键:是另一表的唯一性 ...

  9. hadoop,spark,Zookeeper,,, 这些名字都是怎么来的呢?

    Apache 首先我们要明白,Apache 是一个 http 服务器,而我们熟悉的另一种说法"Apache Hadoop"中的 Apache 则指的是 Apache 软件基金会.& ...

  10. MySQL 5.7忘记root密码如何修改?

    一直以来,MySQL的应用和学习环境都是MySQL 5.6和之前的版本,也没有去关注新版本MySQL 5.7的变化和新特性.今天帮人处理忘记root密码的时时候,发现以前的方法不奏效了.具体情况如下所 ...