0

動的変数を既存の変数に結合するにはどうすればよいですか?

例えば:

私のコード:

<?

// Gets value from url. In this example c is 1.

$c = $_GET[c];  

// Multiple static questions will be pulled from a list. 
// I use two as an example below. 

$Q1 = "Is this question one?";
$Q2 = "so this must be question two then?"

echo "$c: ";
echo "Q$c";  // returns "Q1" but not the string above.
echo '$Q.$c"; // returns the val 1

?>

2つを結合して、適切な文字列を返すにはどうすればよいですか?

4

4 に答える 4

4

動的変数名の代わりに、複数の値を保持する配列を使用してください。

$num = $_GET['c'];

$questions = array(
    "Is this question one?",
    "so this must be question two then?"
);

echo "$num: ";
echo "Q$num";
echo $questions[$num];

「変数変数」よりも配列を好む理由はたくさんあります。1つは、配列内のすべてのアイテムをループするのは簡単なことです。

foreach ($questions as $num => $question) {
    echo "Q$num: $question\n";
}

もう1つは、配列のサイズを計算できることです。

echo "There are " . count($questions) . " total questions.";

もう1つは、簡単に変更できることです。変数変数のような大雑把なツールでは決してできない配列を操作する方法はたくさんあります。

// Add a new question to the array.
$questions[] = 'Question 3: Who are you?!';

// Remove duplicate questions.
$questions = array_unique($questions);
于 2013-01-05T22:34:27.233 に答える
2

あなたが本当に探しているのは配列のようです:

$questions = array("Question 0", "Question 1", "Question 2");
$q = 1;
echo $questions[$q]; //"Question 1"

それ以外の場合は、var-varの厄介なハックネスを使用する必要があります(これは行わないでください)。

echo ${'Q' . $c};

また、が実際には定数でない限り、そうで$_GET[c]ある必要があります(そして、定数のひどい名前になるので、そうではないことを願っています)。そして、キーがに存在すると仮定するのではなく、を使用する必要があります$_GET['c']ccissetc$_GET


完全な例:

$questions = array("Question 0", "Question 1", "Question 2");

$c = (isset($_GET['c'])) ? (int) $_GET['c'] : null;
if (isset($questions[$c])) {
    echo "The question is: " . $questions[$c];
} else {
    echo "The question was not found";
}

おそらく、短いオープンタグの欠点にも注意する必要があります。サーバーでそれらが無効になっている場合、すべてのPHPコードが壊れます。3文字余分に入力しても、そのリスクに見合う価値はないようです。(もちろん、大量検索/置換するのは本当に簡単です<?-> <?php。)

于 2013-01-05T22:34:09.353 に答える
0

私はあなたが何を意味するのかわかりませんが、これは答えだと思います:

<?php

$var = "Q".$_GET['c'];

echo $$var; // take care of the double dollar sign

?>

もちろん、アレイの方が適しています

于 2013-01-05T22:35:00.760 に答える
0

eval()次のようにphp関数を使用できます。

eval("echo \$Q$c;");

ただし、セキュリティ上の問題につながる可能性があるため、検証せずにユーザー データを配置しないように注意する必要があります。

于 2013-01-05T23:02:50.583 に答える