【问题标题】:Underscore gives error in function [duplicate]下划线给出函数错误[重复]
【发布时间】:2012-08-10 06:47:21
【问题描述】:

我有一个 FOR 运行以下行:

        for ($x=1;$x<=10;$x++) 
    {
        $result=$question[$x]."<br /><b>Correct Answer: ".$question[$x]_answer."</b><br />";
        echo $resultado;
    } 

例如,如果我将 $question[$x]_answer 更改为 $answer[x],一切正常。所以我的问题是,如果我在 [x] 后面加上下划线,为什么它不起作用。关于[x]_answer的部分。变量中有[x]后下划线有问题吗?

【问题讨论】:

  • 您希望$question[$x]_answer 是什么?你的数组叫什么?

标签: php


【解决方案1】:

这是一个完全有效的问题。我看不出有任何反对票的理由。

这就是你要使用的:${$question[$x].'_answer'}

让我用一个例子来解释,

$a[1] = 'user';
$b = 1;

所以,

$a[$b] == 'user'; //true

如果

$user_ans = 'success';

我们可以这样使用

${$a[$b].'_ans'} == 'success'; //true

正如@DavidHoude 在评论中指出的,这是 Variable Variables

的示例

【讨论】:

  • 这个答案+1。这是一个变量变量,php.net/manual/en/language.variables.variable.php
  • 使用可变变量有什么优势?几乎所有其他语言都认为有更好的方法来解决这个问题..所以如果没有很好的优势(对于任务 X),为什么要使用变量变量(对于任务 X)?在这种情况下,我认为他们不适合干净地处理/处理这个问题。
  • 没错。我只是在回答 OP 的问题。
  • (当然,我并没有对此表示反对,因为它回答了问题,但为什么会这样做?)
  • 非常感谢。也许我处于睡眠状态但没有注意到那里的数组符号。
【解决方案2】:

$question[$x] 引用一个以 $x 为索引的数组。

即:

$question[0] = "How old are you?";
$question[1] = "Male or Female?";

按照您的方式,$question[$x]_answer 不是有效的variable,索引必须位于末尾。变量名中不能有 [ 或 ]。

如果您有一系列答案,可以尝试将您的变量重命名为 $question_answer[$x]

即:

$question_answer[0] = "12";
$question_answer[1] = "Male";

如果您已经使用索引硬命名变量,则可以使用variable variable: 即:

$question_0_answer = "12";
$question_1_answer = "Male"

为此,您可以使用:$question_{$x}_answer

【讨论】:

    【解决方案3】:

    _ 在 php 中没有特殊含义,因此就像任何其他标准字符一样。您的逻辑与以下任何一个相同

    $question[$x]Qanswer
    $question[$x]Aanswer
    etc...
    

    这些都无效,因为变量不能使用[]$(这些是特殊的)。

    例如,您不能有 $my[var$my$var 这样的变量。

    所以$question[$x]_answer 要么看起来像 php 的单个变量,但其中包含无效标记([$x]),要么看起来像一个数组,$question[$x] 附加了一些奇怪的东西(比如缺少一个空格或点)。

    例如,

    $question[$x] answer
    $question[$x].answer
    

    看起来像更有效的东西(最后一个可能是你想要的)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多