PHP中的PHP变量变量

Hom*_*r_J 2 php

感谢下面的帮助,但我仍然遇到一些问题,我会尝试进一步解释:

我有一个变量如下:

$value['questions'];
Run Code Online (Sandbox Code Playgroud)

现在,我需要在循环中进行检查,所以我在循环中有这段代码:

if($results[$value['questions']]==4){blah blah blah};
Run Code Online (Sandbox Code Playgroud)

但我遇到的问题是,价值$value['questions']是Q1,但我需要的Q1是一个字符串(i.e. inside quotes '')代码的$结果部分,所以$结果元素应该是这样的......

if($results['q1']==4){blah blah blah};
Run Code Online (Sandbox Code Playgroud)

目前它看起来像这样

if($results[q1]==4){blah blah blah};
Run Code Online (Sandbox Code Playgroud)

合理?

再次感谢您的帮助.

大家好,

我希望有一个简单的解决方案!

我有一个变量:

$results['q1'];
Run Code Online (Sandbox Code Playgroud)

是否可以将'q1'元素作为变量,如下所示:

$results['$i[question]'];
Run Code Online (Sandbox Code Playgroud)

无法在Google上找到解决方案并研究PHP手册......

有人有建议/解决方案吗?

谢谢,

荷马.

Pas*_*TIN 6

是的,在访问数组元素时,可以使用变量作为indice.

例如,考虑这部分代码:

$results = array(
    'a' => 'sentence a', 
    'b' => 'hello !', 
);

$indice = 'a';
echo $results[$indice];
Run Code Online (Sandbox Code Playgroud)

这将给出以下输出:

sentence a
Run Code Online (Sandbox Code Playgroud)


这里$indice是一个非常简单的变量,但你可以在[和之间使用任何你想要的]东西,例如:

  • 功能 : $results[ my_function($parameter) ]
  • 数组元素: $result[ $my_array['indice'] ]
    • 这似乎是你想要做的?
  • 对象属性: $result[ $obj->data ]
  • ...

基本上,你可以使用你想要的任何东西 - 只要它评估为标量值(即一个整数,字符串)


在您的具体情况下,您可能已经$results声明了这样的一点:

$results = array(
    'q1' => 'first question', 
    'q2' => 'second question', 
);
Run Code Online (Sandbox Code Playgroud)

$i将这样声明:

$i = array(
    'question' => 'q1'
);
Run Code Online (Sandbox Code Playgroud)

这意味着$i['question']将是'q1',并且下面的代码部分:

echo $results[ $i['question'] ];
Run Code Online (Sandbox Code Playgroud)

会得到你这个输出:

first question
Run Code Online (Sandbox Code Playgroud)



编辑:要回答您在问题标题中使用的特定单词,您还可以在PHP中使用所谓的变量变量:

$variable = 'a';
$indice = 'variable';
echo $results[ $$indice ];
Run Code Online (Sandbox Code Playgroud)

这里 :

  • $indice'variable'
  • 并且$$indice'a'
  • 这意味着你将获得与以前相同的输出


当然,不要忘记阅读PHP手册的Arrays部分.

为什么$ foo的[bar]错了?段落可能是有意义的,特别是考虑到你发布的例子.



编辑OP后编辑:

如果$value['questions']'q1',那么,以下两部分代码:

if($results[$value['questions']]==4){blah blah blah}
Run Code Online (Sandbox Code Playgroud)

if($results['q1']==4){blah blah blah}
Run Code Online (Sandbox Code Playgroud)

应该完全相同的事情:with $results[$value['questions']],$value['questions']部分将'q1'在表达式的其余部分之前被评估(to ),并且那个部分将与之相同$results['q1'].


作为示例,以下代码部分:

$results = array(
    'q1' => 4, 
    'q2' => 6, 
);
$value = array('questions' => 'q1');

if($results[$value['questions']]==4) {
    echo "4";
}
Run Code Online (Sandbox Code Playgroud)

输出4.