如何动态创建变量并传入php内置函数

时间:2015-04-11 17:29:27

标签: php

我有一个这样的字符串:$shortName = 'DATE,FB,DS,AK,GB,AJ,GL';

现在我想动态创建$DATE $FB $DS $AK $GB $AJ $GL之类的变量,以便将这些变量传递给bind_result()函数。

这是我的代码

$gameQuery  = "SELECT `SHORT` FROM `game` WHERE `STATUS` = 1"
$gameStmt   =  $this->game->prepare($gameQuery);
$gameStmt   -> execute();
$gameStmt   -> bind_result($short);

$shortName = 'DATE';

while ($gameStmt->fetch()) {
   $shortName = $shortName.','.$short; 
}

echo $shortName; #output : DATE,FB,DS,AK,GB,AJ,GL

$chartQuery = "SELECT $shortName FROM `chart` WHERE MONTH(`date`) = ?";
$chartStmt  =  $this->chart->prepare($chartQuery);
$chartStmt  -> bind_param("s",$month);
$chartStmt  -> execute();
$chartStmt  -> bind_result();

有人为此提供解决方案或替代方案吗?

1 个答案:

答案 0 :(得分:3)

您可以extract()使用explode()array_combine()来执行此操作:

$vars = explode(',', $shortName);
$array = array_combine($vars, $vars);
extract($vars);

Demo

explode()使用逗号作为分隔符将该字符串转换为数组。 array_combine()使用键创建关联数组(下一步需要)。然后extract()将每个数组元素转换为变量。

这让人感到费解,但这就是你要求的。