2011-06-17 7 views
0

イムをマージすることを混同...例のように変数PHPに

$Q1 = "hello"; 
$Q2 = "world"; 
$Q3 = "StackOverflow"; 

$i = 1; 

while($i < 3) { 
    $a = "$Q".$i; //I think this is wrong.  
    echo $a; // i tried ${$a} doesn't work =/ 

    $i++; 
} 

、出力形式:

$Q1 
$Q2 
$Q3 

が、出力は次のようにありません。 こんにちは 世界 StackOverflow

欲しい$Q + $iは答えること$Q1になっている: "こんにちは" ...

+0

これらを変数名または変数名といいます。 –

答えて

9
$varName = 'Q'.$i; 
$a .= $$varName; 

それとも

echo $$varName . "<br>\n"; 
+0

ありがとうございます。できます。私はそれを覚えています:) – user453089

+0

申し訳ありません私のインターネットは長い...私は今これを受け入れる... – user453089

+0

良いよりも遅い:) – dynamic

1

echo $Q1 . $Q2 . $Q3;あなたが探しているものが出力されます。

また、あなたがこれを行うことができます:

$a = ''; 

for($i = 1; $i <= 3; $i++) 
    $a .= ${'Q' . $i}; 

echo $a; 
3

は、変数の変数を作成するには、使用:

$a = ${'Q'.$i}; 
0

うん。二重引用符で囲まれた文字列を持っていて、それにドル記号などを入れると、変数として解釈されます。あなたのケースでは

$test = "hi"; 
echo "$test world"; //This outputs hi world 

(それはまた\nのようなものをエスケープ)、$Qは存在しません。 PHPのデフォルトの動作は、そのエラーを無視して何も出さないことです。このため、コードのすべての問題を報告することをお勧めします。詳細については http://php.net/manual/en/function.error-reporting.phpをご覧ください。

問題を解決するには、単一引用符付きの文字列を使用します。 do $a = '$Q'.$i;

1

あなたがしていることは、単に '$ Q1'、 '$ Q2'、 '$ Q3'という文字列が表示されているだけです。 PHPでは、あなたは、このようダイナミックな変数名を使用します。

<?php 
$Q1 = 'hello'; 
$Q2 = 'world'; 
$Q3 = 'StackOverflow'; 
for ($i = 1; $i <= 3; $i++) { 
    echo ${'Q' . $i}; 
} 
?> 
0
$Q = array("hello", "world", "StackOverflow"); 
foreach($Q as $w) { 
    echo $w; 
} 

あなたはこのような何かを行うことができないならば、あなたは、動的変数を使用する必要があります。

$var = 'Q' . $i; 
echo $var; 
1

PHPは、変数の変数をサポートしています名前は$$で示されます。これはあなたが望むことをするでしょう。 (と同様の理由から)eval()を使用するのとほとんど同じくらい悪い -

$qvar = 'Q'.$i; 
$a = $$qvar; 

しかし、これは非常に貧しい練習考えられています。

正しい答えは、$Qの配列を作成し、配列要素を参照することです。

$Q = array(
     "hello", 
     "world", 
     "StackOverflow") 

$a = $Q[0] . $Q[1] . $Q[2];