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

配列変数に動的にアクセスする場合は、2つの部分に分割すると、単一の変数は機能しません。

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

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

Take a look at variable variables. Do note that this is a potential security risk if you're working with user input.

In your case: $masking_x = $$masking;

于 2012-07-18T13:11:50.887 に答える