比如我的数组是
$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没变啊?

解决方案 »

  1.   

    foreach($object as $key=>$value){
      $object[$key]['state']='初级会员';
    }
    你的 $value[state]='初级会员'; 语句改变的只是$value变量
      

  2.   


    $key   是不是应该代表的是 0 1 2 ....
    $value 是不是应该代表这样一条Array ( [id] => 16 [user] => shabihi [pass] => 4b121bed5991bf21cbe98232410a16be [email] => [email protected] [state] => 1 )$value[state] 不是上面这个数组里的值1吗?你的方法可以修改了,不过我还是搞不懂$value[state]='初级会员'应该可以的啊
    不好意思 新手..
      

  3.   

    对,$key代表的就是键值 1 2 3
    $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
      

  4.   

    $obj = new SimpleXMLElement($xml);
    echo $obj->getName() . "\n";
    foreach ($obj->children() as $child)
    {
        echo $child->getName() . "\n";
    }
    ?>