感谢下面的帮助,但是我仍然遇到一些问题,我会尝试进一步解释:
我有一个变量如下:
$value['questions'];
现在,我需要在循环中进行检查,所以我在循环中有这段代码:
if($results[$value['questions']]==4){blah blah blah};
但我遇到的问题是$value['questions']
的值是q1但是我需要q1在代码的$ results部分中是一个字符串(i.e. inside quotes '')
,所以$ results元素应该看起来像这样......
if($results['q1']==4){blah blah blah};
目前看起来像这样
if($results[q1]==4){blah blah blah};
有意义吗?
再次感谢您的帮助。
大家好,
我希望有一个简单的解决方案!
我有一个变量:
$results['q1'];
是否可以将'q1'元素作为变量,如下所示:
$results['$i[question]'];
未能在Google上找到解决方案并研究PHP手册......
有人有建议/解决方案吗?
谢谢,
荷马。
答案 0 :(得分:6)
是的,访问数组元素时可以使用变量。
举个例子,考虑这部分代码:
$results = array(
'a' => 'sentence a',
'b' => 'hello !',
);
$indice = 'a';
echo $results[$indice];
将提供以下输出:
sentence a
在这里,$indice
是一个非常简单的变量,但您可以在[
和]
之间使用任何您想要的内容,例如:
$results[ my_function($parameter) ]
$result[ $my_array['indice'] ]
$result[ $obj->data ]
基本上,你可以使用你想要的任何东西 - 只要它评估为标量值(即一个整数,字符串)
在您的具体情况下,您可以$results
声明有点像这样:
$results = array(
'q1' => 'first question',
'q2' => 'second question',
);
$i
将以这种方式宣布:
$i = array(
'question' => 'q1'
);
这意味着$i['question']
将是'q1'
,以及以下代码部分:
echo $results[ $i['question'] ];
会得到这个输出:
first question
修改:要回答您在问题标题中使用的特定字词,您还可以在PHP中使用所谓的 variable variable :
$variable = 'a';
$indice = 'variable';
echo $results[ $$indice ];
这里:
$indice
是'variable'
$$indice
为'a'
当然,不要忘记阅读PHP手册的Arrays部分。
Why is $foo[bar] wrong? 段可能会引起人们的兴趣,特别是考虑到您发布的示例。
编辑OP后编辑:
如果$value['questions']
为'q1'
,则代码的以下两部分为:
if($results[$value['questions']]==4){blah blah blah}
和
if($results['q1']==4){blah blah blah}
应该做同样的事情:使用$results[$value['questions']]
,$value['questions']
部分将在表达式的其余部分之前被评估(到'q1'
),并且该部分将与$results['q1']
。
例如,以下代码部分:
$results = array(
'q1' => 4,
'q2' => 6,
);
$value = array('questions' => 'q1');
if($results[$value['questions']]==4) {
echo "4";
}
输出4
。
答案 1 :(得分:4)
你可以这样做:
$results[$i['question']];
这将首先访问数组$i
,以获得与键 'question'
对应的值。该值将用作数组$results
的键。
你的方式:$results['$i[question]'];
实际上是在尝试获取与数组'$i[question]'
中的键$results
对应的值。由于键是单引号,变量插值会发生不,并且字面上会处理整个字符串。
或者您也可以这样做:
$results["$i[question]"]; // using double quotes also works.
示例:
$arr1 = array('php' => 'zend', 'java' => 'oracle');
$arr2 = array('p' => 'php', 'j' => 'java');
echo $arr1[$arr2['p']]; // prints zend.
echo $arr1["$arr2[p]"]; // prints zend.
答案 2 :(得分:0)
<?php
$result['q1'];
// is equivalent to
$index = 'q1';
$result[ $index ];
现在$index
可能会像您希望的那样复杂。例如,这样的事情也是可能的:
$result[ 'q' . round( $someArray[$i] / 2 ) ];
答案 3 :(得分:0)
<强> CODE 强>
<?php
$results = array(
'q1' => 'This is a result called q1.',
'q2' => 'So, can you access this?',
'$i[question]' => 'This is a result called $i[question]',
);
$i = array(
'question' => 'q2',
'answer' => 'Yes.'
);
echo '<pre>';
echo $results['q1'] . "\n"; // Using Array's is easy -
echo $results['$i[question]'] . "\n"; // all you gotta do is make sure
echo $results[$i['question']] . "\n"; // that you understand how
echo $i['answer']; // the keys work.
?>
<强>输出强>
This is a result called q1.
This is a result called $i[question]
So, can you access this?
Yes.