2010-06-29 52 views
2

我想用数据库中的变量填充模板。数据如下所示:如何从变量名称动态地设置对象的属性?

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! 

我需要做的是数据设置根据field$template对象的属性和设置表示值什么在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但至今没有运气尝试!

回答

8
$template->{$field_name} 
+0

我为什么没有尝试简单的那些第一?它是'$ template - > {$ field_name}',但你绝对会把我送到正确的轨道! – Matthew 2010-06-29 06:48:26

+0

@Matt:F ixed。 – 2010-06-29 06:50:59

3

你正在超越自己。

尝试:

$template->$field_name; 

为什么这项工作?

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

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

谢谢,这为我工作@ @迪姆杰夫先生 – 2017-01-01 22:17:54

0

使用

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

或者干脆

$template->$field_name = $field['content']; 
相关问题