当前位置:编程学习 > php >>

【已解决】如何把一个数组的值赋值给一个不确定成员变量名称和数量的对象 - PHP进阶讨论

思路是这样的,有一个对象$o:$o->a = 1;$o->b = 2;$o->c = 3;可以把这个对象导成数组$a:$a = get_object_vars($o);结果:$a=array(\"a\"=>1,\"b\"=>2,\"c\"=>3);现在改变数组$a的值,如$a=(\"a\"=>12,\"b\"=>23,\"c\"=>34);如何直接把数组$a的值赋值给对象$o呢?(类似get_object_vars函数反过来)注意:不能使用$o->a=$a[\"a\"];的方式赋值,$o可能有很多不确定的成员变量。$o对象也有一些成员函数,不能用其他的类型代替。我尝试过用var_export($o)看$o的结构,写的是ClassO::__set_state(array(\"a\"=>1,\"b\"...));这种形式(其中ClassO是对象$o的类名)我直接用$o=ClassO::__set_state($o);结果给我返回了fatal error,告诉我没有这个\"__set_state()\"成员函数。补充:不使用拼字符串的方式实现,如eval(\"$o=>\".$key.\"=\".$value);已解决,答案在三楼。[[i] 本帖最后由 kxing 于 2009-2-1 16:30 编辑 [/i]]
答案:
原帖由 于 2009-2-1 16:09 发表 [i][/url][/b][color=#007700]=array([/color][color=#dd0000]\"a\"[/color][color=#007700]=>[/color][color=#0000bb]1[/color][color=#007700],[/color][color=#dd0000]\"b\"[/color][color=#007700]=>[/color][color=#0000bb]2[/color][color=#007700],[/color][color=#dd0000]\"c\"[/color][color=#007700]=>[/color][color=#0000bb]3[/color][color=#007700]);[/color][color=#0000bb]$o [/color][color=#007700]= (object)[/color][color=#0000bb]$a[/color][color=#007700];[/color][color=#0000bb]var_dump[/color][color=#007700]([/color][color=#0000bb]$o[/color][color=#007700]);[/color][color=#0000bb]?>[/color]这个肯定是不行的,这样的$o和原来的对象类型就不同了。
到技术吧网站查看回答详情>>
[php]1,\"b\"=>2,\"c\"=>3);$o = (object)$a;var_dump($o);?>[/php]
到技术吧网站查看回答详情>>
已解决,感谢WWX![php] foreach($a as $key=>$value) {? ? $o->$key = $value;}[/php]这就可以解决了,唉,我太迟钝了。
到技术吧网站查看回答详情>>

上一个:函数不知道怎么写,高手救命!!! - 技术问答
下一个:在下问个PHP5.25中偶加了个扩展而用不了的问题 大虾们帮帮忙额

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,