我有一个定义为数组的变量,它以循环方式构建:
$years=array("2010","2011","2012");
foreach($years as $year)
{
///an SQL query + some PDO that queries a different table based on $year
$dataset_full_{$year} = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
所以你最终会得到一组名为
的数组$dataset_full_2010
$dataset_full_2011
$dataset_full_2012
当我print_r($dataset_full_2012);
然而我什么都没得到,但如果我继续定义
$current_year="2012";
然后
print_r($dataset_full_{$current_year});
我得到了我的阵列。我在这里滥用了哪种语法?
提前致谢
答案 0 :(得分:1)
为安全起见,您始终可以使用中间字符串:
$var_name = "dataset_full_" . $year;
$$var_name = $stmt->fetchAll(PDO::FETCH_ASSOC);
您还可以在花括号中使用连接:
${"dataset_full_" . $year} = ...