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 )