是否有一种方法可以将对象属性分配给数组


Is there a way to assign an object property to an array?

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

考虑我们有一个对象$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);

使用此函数

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

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

$array = (array) $localDB;

没有强制转换或foreach,请参阅手册

get_object_vars

根据对象的级别,您可以直接执行

$array = (array) $object;

如果你想要数组内的数组你必须使用某种递归
(我认为,这是我所需要的,所以我没有进一步测试我的情况)

但是看起来这是你想要的一个更简洁的版本

正如在最初问题的注释中所述,这是如何将obj属性分配给数组值的方法:

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