有没有办法将对象属性分配给数组?

时间:2011-04-13 05:54:39

标签: php

很确定有办法做到这一点,但到目前为止我尝试的方法不起作用

考虑我们有一个带有一些属性的对象$ localDB,我正在寻找一种干净的方法来构建$ connexionInfo数组,而不需要转换$ localDB或使用foreach循环。

// This would be too easy if it worked 
$connexionInfo = array( "UID"      => $localDB->uid, 
                        "PWD"      => $localDB->pwd, 
                        "Database" => $localDB->DB
                       );

// tried using {} a few different ways, also does not seem to work
$connexionInfo = array( "UID" => {$localDB->uid}, 
                        "PWD" => {$localDB->pwd}, 
                         "Database"=>  {$localDB->DB} 
                       );

我很确定有一种干净的方法可以做到这一点。任何人吗?

更新:
     //与我上面发布的内容相反......这实际上做了它应该做的事情!

 $connectionInfo = array("UID" => $localDB->uid, "PWD" =>$localDB->pwd, "Database"=> $localDB->DB);

3 个答案:

答案 0 :(得分:2)

使用此功能

function objectToArray($object)
{
    $array=array();
    foreach($object as $member=>$data)
    {
        $array[$member]=$data;
    }
    return $array;
}

您可以尝试将PHP 5对象类型转换为数组。

$array = (array) $localDB;

没有演员或foreach,请参阅手册

get_object_vars

答案 1 :(得分:0)

取决于您可以做的对象内的级别

$array = (array) $object;

如果你想要数组中的数组,你将不得不使用某种递归
(我想,这就是我所需要的,所以我没有对我的案子进一步测试)

但看起来这将是你想要的更干净的版本

答案 2 :(得分:0)

正如在初始问题下的评论中所述,这就是如何将obj属性分配给数组值:

$connectionInfo = array("UID" => $localDB->uid, "PWD" =>$localDB->pwd, "Database"=> $localDB->DB);