如何从变量名称动态设置对象的属性?

时间:2010-06-29 06:42:19

标签: php oop

我正在尝试使用数据库中的变量填充模板。数据如下:

id  field      content
1   title      New Website
1   heading    Welcome!
1   intro      This is a new website I have made, feel free to have a look around
2   title      About
2   heading    Read all about it!

我需要对该数据执行的操作是根据$template列设置field对象的属性,并将所述值设置为content列中的值;例如对于id = 1

$template->title = 'New Website';
$template->heading = 'Welcome!';
$template->intro = 'This is a new websi...';

我有一个数组中的数据,我可以很容易地循环它但我无法弄清楚如何让属性成为另一个变量的名称。我尝试过变量变量方法,但无济于事。这适用于对象属性吗?

这是我到目前为止所得到的:

foreach($data as $field)
{
    $field_name = $field['field'];
    $template->$$field_name = $field['content'];
}

我也尝试过使用$template->${$field_name}$template->$$field_name,但到目前为止还没有运气!

3 个答案:

答案 0 :(得分:8)

$template->{$field_name}

答案 1 :(得分:3)

你已经领先于自己了。

尝试:

$template->$field_name;

为什么这样做?

$foo = 'bar';
$object->bar = 1;

if ($object->$foo == $object->bar){
   echo "Wow!";
}

答案 2 :(得分:0)

使用

$template->{$field_name} = $field['content'];

或只是

$template->$field_name = $field['content'];