【问题标题】:creating variable name by concatenating strings in php通过在php中连接字符串来创建变量名
【发布时间】:2013-06-06 06:36:04
【问题描述】:

我有一个名为 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]
  • 为什么不直接使用 $question12[0]
  • 当然 ...直接使用 $question12[0] 有效..但这不是重点..我想生成一个 php 变量..我被卡住了..

标签: php string


【解决方案1】:

变量变量不推荐,但答案如下:

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

【讨论】:

  • 为什么不推荐变量变量?
  • @Piersv 可能是因为取消引用作为数组的变量属性在 PHP 5 和 PHP 7 之间具有不同的语义,而事实上这总是可以通过使用数组来规避。我没有看到其他缺点。
  • 可变变量在 PHP 5.6 中运行良好,@jordan-doyle 在下面给出了最佳答案。
【解决方案2】:

您正在寻找可变变量。

$id = 12;
$q = "question{$id}";
$q = $$q[0];

您应该认真考虑研究多维数组以停止拥有多个数组。

【讨论】:

    【解决方案3】:

    只需使用 $question12[0]。它会给你想要的输出。

    使用 $var 你可以这样做:-

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

    【讨论】:

      【解决方案4】:

      对不起,我会因为提到 evil 而有些讨厌,但它仍然是选项之一

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

      P.S:eval()是evil

      【讨论】:

      • rename_function('eval', 'evil'); 现在ypu可以使用函数evil
      猜你喜欢
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 2019-01-08
      • 2023-03-07
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多