<?php$arrGoogle=array('brand'=>'google','email'=>'Gmail','WebBrowser'=>'Chrome','phone'=>'Android');foreach($arrGoogle as $a=>$b){ if($b != "") {
$arrGoogle[$a] = "123";
}
echo "$a:".$b."<br/>";
}?>运行结果:
brand:google
email:Gmail
WebBrowser:Chrome
phone:Android
问题:我说上面这个数组值应该都被我替换成了123,为何还是原来的值呢,感谢各位大侠指导,谢谢
$arrGoogle=array('brand'=>'google','email'=>'Gmail','WebBrowser'=>'Chrome','phone'=>'Android');foreach($arrGoogle as $a=>$b){ if($b != "") {
$arrGoogle[$a] = "123";
}
echo "$a:".$b."<br/>"; //你输出的是a与b值,你并没有改变
//你改变的是 arrgoogle 的数组值
}
$arrGoogle=array('brand'=>'google','email'=>'Gmail','WebBrowser'=>'Chrome','phone'=>'Android');
foreach($arrGoogle as $a=>$b){
if($b != "") {
$arrGoogle[$a] = "123";
}
}
print_r($arrGoogle);
?>
循环后输出一下 print_r($arrGoogle); 就可以看到Array
(
[brand] => 123
[email] => 123
[WebBrowser] => 123
[phone] => 123
)但你只是输出了他们修改前的副本 $b
如果你想让修改立即生效,需要写作foreach($arrGoogle as $a=>&$b){
$a = 'brand';
$b = $arrGoogle[$a];
$arrGoogle[$a] = '123';
echo $a.$b;
你怎么能认为$arrGoogle[$a]变了,$b就向应变了呢?他们之间可没有引用联系。