$class = new Class;
$foo = json_decode($_POST['array']);
在这个非常人为的例子中,我有一个有自己的函数和变量的类,等等等等。
我刚刚解码了一个JSON字符串,因此这些值现在位于$foo
。如何将$foo
中的元素移至$class
,以便:
$foo->name
变为$class->name
?
如果我知道所有元素是什么,那将是微不足道的,是的......除了为了充满活力,让我说我希望它们全部转移过来,我不知道他们的名字。
答案 0 :(得分:2)
您可以使用get_object_vars
:
$vars = get_object_vars($foo);
foreach ($vars as $key => $value) {
$class->$key = $value;
}
你也可以在你的班级实现这个:
public function bindArray(array $data) {
foreach ($data as $key => $value) {
$this->$key = $value;
}
}
然后将对象转换为数组:
$obj->bindArray( (array) $foo );
或添加方法来执行此操作:
public function bindObject($data) {
$this->bindArray( (array) $data );
}
答案 1 :(得分:1)
向类添加一个函数以从对象加载值,然后使用foreach
迭代对象的属性并将它们添加到类中(在初始化它们之前,不需要声明类成员):
class Class
{
function load_values($arr)
{
foreach ($arr as $key => $value)
{
$this->$key = $value;
}
}
}
$class = new Class;
$foo = json_decode($_POST['array']);
$class->load_values((array)$foo);