Заполнение свойств объекта массивом? - PullRequest
4 голосов
/ 25 июня 2009

Я хочу взять массив и использовать значения этого массива для заполнения свойств объекта, используя имена ключей массива. Вот так:

$a=array('property1' => 1, 'property2' => 2);
$o=new Obj();
$o->populate($a);

class Obj
{
    function Populate($array)
    {
        //??
    }
}

После этого у меня теперь есть:

$o->property1==1
$o->property2==2

Как бы я поступил так?

Ответы [ 2 ]

12 голосов
/ 25 июня 2009
foreach ($a as $key => $value) {
    $o->$key = $value;
}

Однако синтаксис, который вы используете для объявления массива, недопустим. Вам нужно сделать что-то вроде этого:

$a = array('property1' => 1, 'property2' => 2);

Если вас не волнует класс объекта, вы можете просто сделать это (давая вам экземпляр stdClass):

$o = (Object) $a;
0 голосов
/ 25 июня 2009

Hm. Как насчет того, чтобы иметь что-то вроде

class Obj
{

    var properties = array();

    function Populate($array)
    {
        this->properties = $array;
    }
}

Тогда вы можете сказать:

$o->properties['property1'] == 1
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...