2011-06-17 59 views
0

IM混淆...合併可變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

呀。當你有雙引號的字符串,並且你在其中放置了美元符號和其他東西時,它將它解釋爲一個變量。 (它也逃脫之類的東西\n

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

在你的情況,$Q不存在。默認的PHP行爲是忽略這個錯誤,並且什麼也不做。這就是爲什麼建議使用代碼報告所有問題的原因。詳情請查看 http://php.net/manual/en/function.error-reporting.php

解決您的問題將使用單引號字符串。做$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不支持可變的變量名稱,用$$表示。這將做你想要的。

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

然而,這被認爲是非常差實踐 - 幾乎一樣糟糕使用eval()(由於同樣的理由)。

正確的答案是創建一個數組$Q,並引用數組元素;

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

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