比如我的数组是
$object=Array ( [0] => Array ( [id] => 16 [user] => shabihi [pass] => 4b121bed5991bf21cbe98232410a16be [email] => [email protected] [state] => 1 ) [1] => Array ( [id] => 15 [user] => shabi [pass] => 733d7be2196ff70efaf6913fc8bdcabf [email] => [email protected] [state] => 1 ) [2] => Array ( [id] => 13 [user] => xiaoc [pass] => 4b121bed5991bf21cbe98232410a16be [email] => [email protected] [state] => 1 ) ) 然后我想把state=1 改成初级会员 2改成XXX
foreach($object as $key=>$value){
$value[state]='初级会员';
}我foreach之后print_r($object)为什么state没变啊?
$object=Array ( [0] => Array ( [id] => 16 [user] => shabihi [pass] => 4b121bed5991bf21cbe98232410a16be [email] => [email protected] [state] => 1 ) [1] => Array ( [id] => 15 [user] => shabi [pass] => 733d7be2196ff70efaf6913fc8bdcabf [email] => [email protected] [state] => 1 ) [2] => Array ( [id] => 13 [user] => xiaoc [pass] => 4b121bed5991bf21cbe98232410a16be [email] => [email protected] [state] => 1 ) ) 然后我想把state=1 改成初级会员 2改成XXX
foreach($object as $key=>$value){
$value[state]='初级会员';
}我foreach之后print_r($object)为什么state没变啊?
$object[$key]['state']='初级会员';
}
你的 $value[state]='初级会员'; 语句改变的只是$value变量
$key 是不是应该代表的是 0 1 2 ....
$value 是不是应该代表这样一条Array ( [id] => 16 [user] => shabihi [pass] => 4b121bed5991bf21cbe98232410a16be [email] => [email protected] [state] => 1 )$value[state] 不是上面这个数组里的值1吗?你的方法可以修改了,不过我还是搞不懂$value[state]='初级会员'应该可以的啊
不好意思 新手..
$value代表的就是这样的数组
但PHP默认 总是 传值赋值 ,也就是说 $key $value 都只是一部分拷贝,那么改变$key $value都和$object无关咯。 有另一种方案就是 加&引用赋值 ,例如:
foreach($object as $key=>&$value){
$value[state]='初级会员';
}
这样的话就可以通过改变 $value来改变 $object ,因为它是$object的一部分了现在。
这些概念我想想都觉得拗口。 权威,确切的解释在官方手册 http://www.php.net/manual/zh/language.variables.basics.php
echo $obj->getName() . "\n";
foreach ($obj->children() as $child)
{
echo $child->getName() . "\n";
}
?>