2014-07-08 21 views
0

我在这里做错了什么?这很简单,我忽略了一些东西。我试图在foreach循环中替换数组键的值:在foreach循环中替换数组的值

$arr = array(); 
$arr['firstimg'] = '123'; 
$arr['secondimg'] = '456'; 
$arr['thirdimg'] = '789'; 

foreach ($arr as $key => $value) { 

    if ($key == 'secondimg') { 
     $value = '000'; 

    } 

} 

print_r($arr); 

该数组保持不变。

回答

3

变量$value的作用域为循环。您需要更新$arr[$key]的值。

或者,也可以如下声明循环:

foreach ($arr as $key => &$value) { 

这使得$value到原来的数组值(而不是复制)的引用。

+0

啊哈,谢谢!我最近一直没有睡觉! :) – JROB

+0

+1我推荐'$ arr [$ key]'方法,因为如果'$ value'在循环之后被重用,那么使用引用可能会产生古怪的结果。 – Jim

1

应该是:

foreach ($arr as $key => $value) { 

    if ($key == 'secondimg') { 
     $arr['secondimg'] = '000'; 

    } 

} 
0

路过refrence,

$arr = array(); 
$arr['firstimg'] = '123'; 
$arr['secondimg'] = '456'; 
$arr['thirdimg'] = '789'; 

foreach ($arr as $key => $value) { 

    if ($key == 'secondimg') { 
     $value = '000'; 

    } 

} 

print_r($arr); 

$arr = array(); 
$arr['firstimg'] = '123'; 
$arr['secondimg'] = '456'; 
$arr['thirdimg'] = '789'; 

foreach ($arr as $key => &$value) { 

    if ($key == 'secondimg') { 
     $value = '000'; 

    } 

} 

print_r($arr);