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
)