2010-06-25 64 views
1

stdClass::__set_state(array(
    'zone1' => 
    array (
    0 => 
    stdClass::__set_state(array(
     'id' => '123', 
     'owner' => '234', 
     ... 
    )), 
 

嗨,添加在数据谢灵运一个stdClass的对象(PHP)

我基本都有点拍,所以我有这个麻烦...我需要创建上述结构,但我不知道如何...

+1

'stdClass'没有'__set_state()'方法。 – 2010-06-25 09:19:09

+1

@Daniel Egeberg:你说得对,它没有那种方法。它只是如何导出对象(这对stdClass没什么意义)var_export((object)array('zone1'=> array((object)array('id'=>'123','owner'=>' 234' ))));' – salathe 2010-06-25 09:44:26

回答

7
$a = new stdclass; 
$a->zone1 = array(); 
$a->zone1[0] = new stdclass; 
$a->zone1[0]->id = "123"; 
$a->zone1[0]->owner = "234"; 

另外,依赖于一个事实,即数组转换为stdClass的对象时铸成对象:

$a = (object) array(
    "zone1" => array(
     (object) array("id" => "123", "owner" => "234"), 
    ), 
); 

为此,var_export给出:

 
stdClass::__set_state(array(
    'zone1' => 
    array (
    0 => 
    stdClass::__set_state(array(
     'id' => '123', 
     'owner' => '234', 
    )), 
), 
)) 

需要注意的是,有丹尼尔指出,stdClass实际上并没有一个__set_state方法。我想你只是通过给出var_export的输出来举例说明变量的结构。序列化应该用serialize代替。