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
)