foreach 引用传值&
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 引用传值&的更多相关文章
- 从一次面试经历谈PHP的普通传值与引用传值以及unset
关于这个概念一般都会在PHP的第一堂课说变量的时候给介绍,并且我以前还给其他PHPer介绍这个概念.但是作为一个工作一段时间的PHPer的我,竟然在面试的时候一下子拿不定主意最后还答错了,很觉得丢脸( ...
- php普通传值和引用传值 (相当通俗易懂的一篇讲解)
首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 普通传值,传值以后,是不同的地址名称,指向不同的内存实体; 引用传值,传引用后,是不同的地址名称,但都指向同一 ...
- PHP的普通传值与引用传值以及unset
首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 普通传值,传值以后,是不同的地址名称,指向不同的内存实体; 引用传值,传引用后,是不同的地址名称,但都指向同一 ...
- php foreach引用赋值
在写代码时发现php foreach引用赋值会导致意外的行为. 代码示例: <?php $arr = array('a','b','c'); foreach($arr as $k=>&am ...
- Java基础必备 -- 堆栈、引用传值、垃圾回收等
在Java中,对象作为函数参数的传递方式是值传递还是引用传递?String str = "abc" 与 String str = new String("abc&quo ...
- PHP和CS的引用传值
PHP的引用传值 function change_value($num){ $num+=2; } $age = 3; change_value(&$age); echo $age; CS的引用 ...
- Python引用传值总结
Python函数的参数传值使用的是引用传值,也就是说传的是参数的内存地址值,因此在函数中改变参数的值,函数外也会改变. 这里需要注意的是如果传的参数类型是不可改变的,如String类型.元组类型,函数 ...
- PHP引用传值规范问题
在我上一篇: shopnc 商城源码阅读笔记--开篇概述 中,遇到了一个PHP引用传值导致的错误,情况大致如下: 在我查阅PHP官方文档 的中文版的时候 http://php.net/ma ...
- php引用传值
isset();判读值是否值在 unset();取消变量 <?php$a=array("a","b","c");$b=$a;$b[2] ...
随机推荐
- 预览github代码
方法一:最简单的方法,在代码的url前面加上: http://htmlpreview.github.com/? 方法二: 使用Githubpages, 方法一有可能会修改css样式,不过方法二略复杂, ...
- Mysql Group by 使用解析
使用gruop by 分组 1. 方式一:select name from table1 group by name; 注意:group by 两侧都应该含有name,例如select country ...
- @Value取不到值的原因(引用application.properties中自定义的值)
在spring mvc架构中,如果希望在程序中直接使用properties中定义的配置值,通常使用一下方式来获取: @Value("${tag}") private String ...
- SAP MM 按采购订单查询付款信息的报表?
SAP MM 按采购订单查询付款信息的报表? 上午给P3项目采购部门用户做了一个采购相关的报表的培训.培训过程中,客户的采购部门经理提出了一个问题:有没有报表能查询到各个采购订单的付款情况,显示采购订 ...
- 使用SQL查看表字段和字段说明
MySql: show full columns from tableName; Sql server: SELECT A.name AS table_name, B.name AS column_n ...
- mysql中需要注意的编码问题
- Implemented Energy-Conserving Hair Scattering Model from Weta Digital
I used to implement the Energy-Conserving Hair Scattering Model as the pre-calculation program, so t ...
- 2018-05-11-机器学习环境安装-I7-GTX960M-UBUNTU1804-CUDA90-CUDNN712-TF180-KERAS-GYM-ATARI-BOX2D
layout: post title: 2018-05-11-机器学习环境安装-I7-GTX960M-UBUNTU1804-CUDA90-CUDNN712-TF180-KERAS-GYM-ATARI- ...
- 开发nginx启动脚本及开机自启管理(case)
往往我们在工作中需要自行写一些脚本来管理服务,一旦服务异常或宕机等问题,脚本无法自行管理,当然我们可以写定时任务或将需要管理的脚本加入自启等方法来避免这种尴尬的事情,case适用与写启动脚本,下面给大 ...
- wordpress安装后访问博客只显示文字的解决办法
按着网上的教程,买了腾讯云服务器,上面的镜像已经安装好WordPress了.但是发现并不像网上十分钟搭建个人站点等的写的那么简单.遇到了一些问题,下面来详细讲一讲. 首先是用ip地址不能直接访问服务器 ...