我希望$masking_x
充当$masking_y
(即动态插入$radiovalue
,但仍然充当变种)。
我的代码是
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
非常感谢任何指导。提前谢谢。
答案 0 :(得分:2)
您使用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>";
答案 1 :(得分:1)
如果要动态访问数组变量,请将其拆分为两部分,单个变量无法正常工作。
$name = 'field_masking';
$key = 'checkbox_1001_'.$radiovalue;
echo $$name[$key];
答案 2 :(得分:0)
看看variable variables。请注意,如果您正在处理用户输入,则存在潜在的安全风险。
在您的情况下:$masking_x = $$masking;