我希望$masking_x充当$masking_y (即动态插入$radiovalue,但仍然充当varibale)。
我的代码是
while($field_radio = mysql_fetch_assoc($result_radio)) {
$radiovalue = $field_radio[radiovalue];
echo "Radio value: ".$radiovalue."</br>";
$masking = "field_masking[checkbox_1001_".$radiovalue."]";
$masking_x = '$'.$masking;
$masking_y = "$field_masking[checkbox_1001_2]";
echo "Masking: ".$masking."</br>";
echo "Masking_x: ".$masking_x."</br>";
echo "Masking_y: ".$masking_y."</br>";
die;我得到了以下输出:
Radio value: 2
Masking: field_masking[checkbox_1001_2]
Masking_x: $field_masking[checkbox_1001_2]
Masking_y: 2任何指导都将不胜感激。提前谢谢。
发布于 2012-07-18 21:27:05
如果你想动态访问一个数组变量,把它分成两部分,单个变量是不起作用的。
$name = 'field_masking';
$key = 'checkbox_1001_'.$radiovalue;
echo $$name[$key];发布于 2012-07-18 21:09:35
您对variable variables的使用稍有错误。试着这样做:
$radiovalue = $field_radio['radiovalue'];
echo "Radio value: ".$radiovalue."</br>";
$masking_x = "field_masking['checkbox_1001_".$radiovalue."']";
$masking_y = "field_masking['checkbox_1001_2']";
echo "Masking_x: ".$$masking_x."</br>";
echo "Masking_y: ".$$masking_y."</br>";双美元符号必须在代码中,而不是在字符串中。
也可以这样做:
$radiovalue = $field_radio['radiovalue'];
echo "Radio value: ".$radiovalue."</br>";
echo "Masking_x: ".${"field_masking['checkbox_1001_".$radiovalue."']"}."</br>";
echo "Masking_y: ".${"field_masking['checkbox_1001_2']"}."</br>";另请注意,我在字符串中添加了单引号,以正确地引用数组键、关联数组键所使用的字符串,这些是常规字符串,应该这样引用。
然而,,重要的是要注意,变量很少是给定问题的正确解决方案。使用arrays或references通常可以想出更好的解决方案。
编辑
在使用它之后,当键定义在字符串中时,似乎不能使用变量变量来引用数组键。这是一件非常可怕的事情,我从来没有遇到过这样的限制,我一点也不奇怪。
简而言之,你不能准确地做你想要做的事情,对你来说最好的解决方案可能是使用引用:
$radiovalue = $field_radio['radiovalue'];
echo "Radio value: ".$radiovalue."</br>";
$masking = &$field_masking['checkbox_1001_'.$radiovalue];
echo "Masking: ".$masking."</br>";
$masking = "A different value";
echo "Masking: ".$masking."</br>";
// Original value has been updated as well
echo "\$field_masking['checkbox_1001_'.\$radiovalue]: ".$field_masking['checkbox_1001_'.$radiovalue]."</br>";发布于 2012-07-18 21:11:51
看看variable variables吧。请注意,如果您正在处理用户输入,这将是一个潜在的安全风险。
在您的例子中:$masking_x = $$masking;
https://stackoverflow.com/questions/11542056
复制相似问题