PHP变量名称语法:数字和变量作为变量名称的一部分

时间:2013-02-18 02:18:35

标签: php arrays loops

我有一个定义为数组的变量,它以循环方式构建:

$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});

我得到了我的阵列。我在这里滥用了哪种语法?

提前致谢

1 个答案:

答案 0 :(得分:1)

为安全起见,您始终可以使用中间字符串:

$var_name = "dataset_full_" . $year;
$$var_name = $stmt->fetchAll(PDO::FETCH_ASSOC);

您还可以在花括号中使用连接:

${"dataset_full_" . $year} = ...

Here's the docs