1

我想$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

任何指导将不胜感激。提前致谢。

4

3 回答 3

2

您使用的变量变量略有错误。试试这个:

$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>";

另请注意,我在您的字符串中添加了单引号以正确引用用于数组键的字符串,关联数组键这些是常规字符串,应该这样引用。

然而,重要的是要注意变量变量很少是给定问题的正确解决方案。通常可以使用数组引用来提出更好的东西。

编辑

在玩弄它之后,当键定义在字符串中时,您似乎不能使用变量变量来引用数组键。这是一件非常可怕的事情,我从来没有遇到过这个限制,我并不感到惊讶。

总而言之,你不能完全按照你想做的事情去做,对你来说最好的解决方案可能是使用引用来代替:

$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-18T13:09:34.597 回答
1

如果要动态访问数组变量,请将其分成两部分,单个变量将不起作用。

$name = 'field_masking';
$key = 'checkbox_1001_'.$radiovalue;

echo $$name[$key];
于 2012-07-18T13:27:05.117 回答
0

看看变量变量。请注意,如果您使用用户输入,这是一个潜在的安全风险。

在你的情况下:$masking_x = $$masking;

于 2012-07-18T13:11:50.887 回答