0

我有一个定义为数组的变量,它内置在一个循环中:

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

我得到了我的数组。我在这里滥用了什么语法?

提前致谢

4

1 回答 1

1

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

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

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

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

这是文档

于 2013-02-18T02:24:33.250 回答