下划线在功能上给出错误

时间:2012-08-14 01:13:30

标签: php

我有一个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] 后,是否存在下划线问题?

3 个答案:

答案 0 :(得分:3)

$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

答案 1 :(得分:3)

这是一个非常有效的问题。我没有看到任何理由进行投票。

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

让我用一个例子来解释,

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

所以,

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

如果

$user_ans = 'success';

我们可以像

一样使用它
${$a[$b].'_ans'} == 'success'; //true

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

的一个例子

答案 2 :(得分:0)

_在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

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