2013-02-18 73 views
0

我定义为一个数组变量,它是建立在一个循环:PHP变量名语法:数字和变量作为一个变量名的一部分

$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

为了安全起见,你可以随时使用一个中间字符串:

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

您还可以使用大括号内串联:

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

Here's the docs

+0

谢谢,那太好了。 – Gideon 2013-02-18 02:47:18