【问题标题】:Merging Variable PHP合并变量 PHP
【发布时间】:2011-09-17 12:03:47
【问题描述】:

我对此感到困惑......

例如:

$Q1 = "hello";
$Q2 = "world";
$Q3 = "StackOverflow";

$i = 1;

while($i < 3) {
  $a = "$Q".$i; //I think this is wrong.    
  echo $a; // i tried ${$a} doesn't work =/

  $i++;
}

然后输出格式:

$Q1
$Q2
$Q3

但没有这样的输出: 你好 世界 堆栈溢出

我想像$Q + $i 变成$Q1 回答是:“你好”...

【问题讨论】:

  • 这些被称为变量变量或带有变量名的变量。

标签: php variables merge var


【解决方案1】:
$varName = 'Q'.$i;
$a .= $$varName; 

或者只是

echo $$varName . "<br>\n";

【讨论】:

    【解决方案2】:

    要创建变量变量,请使用:

    $a = ${'Q'.$i};
    

    【讨论】:

      【解决方案3】:

      echo $Q1 . $Q2 . $Q3; 将输出您要查找的内容。

      或者,您可以这样做:

      $a = '';
      
      for($i = 1; $i <= 3; $i++)
        $a .= ${'Q' . $i};
      
      echo $a;
      

      【讨论】:

        【解决方案4】:

        您在此处所做的只是打印字符串“$Q1”、“$Q2”和“$Q3”。在 PHP 中,您可以通过这种方式使用动态变量名:

        <?php
        $Q1 = 'hello';
        $Q2 = 'world';
        $Q3 = 'StackOverflow';
        for ($i = 1; $i <= 3; $i++) {
            echo ${'Q' . $i};
        }
        ?>
        

        【讨论】:

          【解决方案5】:

          PHP 确实支持变量名,用$$ 表示。这会做你想做的。

          $qvar = 'Q'.$i;
          $a = $$qvar;
          

          但是,这被认为是非常糟糕的做法——几乎和使用eval() 一样糟糕(并且出于类似的原因)。

          正确的答案是创建一个$Q 的数组,并引用数组元素;

          $Q = array(
                  "hello",
                  "world",
                  "StackOverflow")
          
          $a = $Q[0] . $Q[1] . $Q[2];
          

          【讨论】:

            【解决方案6】:

            是的。当你有双引号字符串,并且你在其中放了一个美元符号和其他东西时,它会将它解释为一个变量。 (它也逃脱了\n之类的东西)

            例子

            $test = "hi";
            echo "$test world"; //This outputs hi world
            

            在您的情况下,$Q 不存在。默认的 PHP 行为是忽略该错误并且什么也不输出。这就是为什么建议报告您的代码的所有问题的原因。退房 http://php.net/manual/en/function.error-reporting.php了解详情。

            您的问题的解决方案是使用单引号字符串。做$a = '$Q'.$i;

            【讨论】:

              【解决方案7】:
              $Q = array("hello", "world", "StackOverflow");
              foreach($Q as $w) {
                  echo $w;
              }
              

              如果你不能这样做,那么你将需要使用动态变量:

              $var = 'Q' . $i;
              echo $var; 
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-09-25
                • 2012-09-24
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多