2012-02-19 49 views
2

有没有办法用foreach设置数组成员的值?如何在foreach循环中设置成员值

<? 
    $arr = array(0=>'a',1=>'b',2=>'c',3=>'d'); 

    foreach($arr as $key => $value){ 
    $value = 'a'; 
    } 

    var_dump($arr); 
?> 

回报:

array(4) { 
    [0]=> 
    string(1) "a" 
    [1]=> 
    string(1) "b" 
    [2]=> 
    string(1) "c" 
    [3]=> 
    string(1) "d" 
} 

当我试图得到它的回报是:

array(4) { 
     [0]=> 
     string(1) "a" 
     [1]=> 
     string(1) "a" 
     [2]=> 
     string(1) "a" 
     [3]=> 
     string(1) "a" 
    } 

下面是我用的是键盘的链接。

http://codepad.org/FQpPYFtz

+0

+1提供一个完整的,最小的和有益的抽象样本。更多的人应该这样做。 – Tomalak 2012-02-19 11:04:07

回答

3
$arr = array(0=>'a',1=>'b',2=>'c',3=>'d'); 

foreach($arr as $key => &$value) { // <-- use reference to $value 
    $value = 'a'; 
} 

var_dump($arr); 
+1

正是我正在寻找的快速解决方案。看起来我将不得不努力去理解这个参考事物。谢谢你指出这件事给我! – 2012-02-19 10:37:42

3

这是很简单的:

foreach ($data as $key => $value) { 
    $data[$key] = 'new value'; 
}