2012-02-20 150 views
0

我在while循环动态创建一些变量名:创建变量名动态

while($count < $agendaItemsCount) { 
     $tr_mcs_agendaitem_[$count]_1 = get_post_meta($post->ID, '_tr_mcs_agendaitem_' . $count . '_1', true); 
    ++ $count 
} 

但是这个代码是造成意外的字符串解析错误。我该如何编写这段代码,以便通过count变量输出和var名称的其余部分声明新的var?

+3

有什么好的理由不使用一个键值对数组? – Incognito 2012-02-20 14:01:14

+0

[PHP变量变量]的可能重复(http://stackoverflow.com/questions/4511948/php-variable-variables) – jprofitt 2012-02-20 14:03:14

+0

@Incognito我没有控制数据回来......我在wordpress工作。大括号不起作用.... $ tr_agendaitem _ {$ count} _1 = get_post_meta($ post-> ID,'agendaitem_'。$ count。'_1',true);仍然会产生语法错误 – 2012-02-20 14:09:28

回答

2

所以你想创建像$tr_mcs_agendaitem_1_1$tr_mcs_agendaitem_2_1等变量? 虽然我建议使用数组,你可以做到以下几点:

$collection = array(); 
while($count < $agendaItemsCount) { 
    $collection['tr_mcs_agendaitem_'.$count.'_1'] = 
     get_post_meta($post->ID, '_tr_mcs_agendaitem_' . $count . '_1', true); 
    ++ $count; 
} 
extract($collection); 

另一种解决方案是使用“variable variables”:

while($count < $agendaItemsCount) { 
    $varname = 'tr_mcs_agendaitem_'.$count.'_1'; 
    $$varname = get_post_meta($post->ID, '_tr_mcs_agendaitem_' . $count . '_1', true); 
    ++ $count; 
} 
+0

不要忘记初始化数组:'$ collection = new array();',如果$ agendaItemsCount为0. – talereader 2012-02-20 16:32:45

+0

谢谢!我相应地编辑了我的帖子。 – chiborg 2012-02-21 10:00:47