在PHP中通过连接字符串创建变量名

38

我有一个名为 questions.php 的文件,其中包含以下数组:

$question12 = array("Which is the tallest mountain","Mt Everest");

我将这个文件包含在另一个文件中,方法如下:

require_once('questions.php');
$var = 12;
$question = '$question'.$var.'[0]';
echo $question;

以上代码只是输出以下字符串(而非变量的内容):

$question12[0]

但是我希望变量$question包含在$question12[0]中存在的字符串。

我该如何实现这个目标?


只需使用 $question12[0]。 - Vivek Sadh
为什么不直接使用 $question12[0] 呢? - amrinder007
当然...直接使用$question12[0]可以工作..但那不是重点.. 我想生成一个PHP变量..但我卡住了.. - Pradeep
4个回答

86

不建议使用变量 variable,但以下是答案:

$question = ${'question'.$var}[0];

11
为什么不建议使用变量variable? - piersb
1
@Piersv 可能是因为在 PHP 5 和 PHP 7 之间,对于解引用变量属性的数组具有不同的语义,而且这总是可以通过使用数组来规避。我没有看到其他缺点。 - Adam
变量变量在PHP 5.6中运行良好,@jordan-doyle在下面给出了最佳答案。 - Chiwda
@Chiwda 这对于 PHP 8 同样适用吗? - Syed M. Sannan

6
你正在寻找可变变量。
$id = 12;
$q = "question{$id}";
$q = $$q[0];

你应该认真考虑使用多维数组来避免使用多个数组。

4

抱歉,我提到了一些 邪恶 的东西,可能会引起一些不满,但这仍然是其中之一的选择。

<?php
$question12 = array("Which is the tallest mountain","Mt Everest");
$var = 12;
$question = '$question'.$var.'[0]';
eval("echo $question;");
?>

提示: eval() 是邪恶的函数


13
rename_function('eval', 'evil'); 的意思是将函数 eval 重命名为 evil,现在你可以使用函数 evil - Jordan Doyle

4

只需使用 $question12[0]。它会给您所需的输出。

使用 $var,您可以这样做:

$question = ${'question'. $var}[index]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接