2012-02-17 137 views
-4

我有一個數組是這樣的:打印PHP變量名

$lang = array(); 
$lang['ITEM0'] = 'Home'; 

現在好了,如果我救變量名$ LANG [「ITEM0」]到MySQL和我嘗試呼應查詢結果,它打印我$ lang ['ITEM0']作爲一個字符串,而不是一個變量,所以我怎麼能打印正確的價值'家'的變量名從MySQL? 下面的代碼:

while($row = mysql_fetch_array($r)) 
{ 
    echo $row['name']; 
} 

//result: $lang['ITEM0'] 
//I want result: Home 

謝謝:)

+4

請向我們展示將數據保存到數據庫的代碼部分。這可能是你的錯誤... – 2012-02-17 21:40:06

+0

我們需要更多的代碼。要麼'回聲'出一個單引號字符串,並且該變量不是插值的,或者您將其存儲在數據庫中的單引號內,並且它不會插值... – 2012-02-17 21:40:34

+0

while($ row = mysql_fetch_array($ r)) { \t echo $ row ['name']; } //結果:$ lang ['ITEM0'] //我想要的結果:首頁 – Maiori 2012-02-17 21:44:48

回答

-1

使用可變的變量:

echo $$row['name']; 

注:兩個$跡象。

PS。永遠不要使用eval;)

+0

我認爲這會工作,在我回答之前,但我測試了它,它沒有工作 - ** $ lang = $ row = array(); $ lang ['ITEM0'] ='家'; $ row ['name'] ='$ lang [\'ITEM0 \']'; echo $$ row ['name']; //錯誤** – mpratt 2012-02-17 22:41:04

+0

你會得到什麼錯誤? – 2012-02-17 22:52:58

1

保存不是一個變量,但只有索引會是一個更理智的解決方案。

while($row = mysql_fetch_array($r)) 
{ 
    echo $lang[$row['name']]; 
} 
0

上帝知道你爲什麼要存儲在DB這樣的變量,但我相信你的意思是你的行名存儲爲字面上$lang['ITEM0'](該變量的不是內容,變量名本身。)

但是,你可以這樣做:

eval("echo " . $row['name']);

但其他人說,不使用eval。我會重新考慮你是如何做這件事的,因爲它看起來像是等待發生的安全噩夢。

順便說一句:如果你覺得你必須這樣做,至少使用「你的常識」的方法。

0

我來到這裏是尋找相同的東西,後來意識到我已經知道答案只是努力尋找已經存在的東西。

在您的mysql語句中,將變量的名稱保存爲您獨有的內容。而不是$ lang ['ITEM0']保存爲{lang ['ITEM0']}或任何其他獨特的。例如我有{userid}。然而,在你的榜樣,你可以再在你的PHP代碼中使用: 所以現在我們假設

$lang = array(); 
$lang['ITEM0'] = 'Home'; 
while($row = mysql_fetch_array($r)) 
{ 
    echo $row['name'] ; 
} 

在這裏,你得到的輸出:我想去{LANG [「ITEM0」]}。
它改成這樣:

$lang = array(); 
$lang['ITEM0'] = 'Home'; 
while($row = mysql_fetch_array($r)) 
{ 
    $var = str_replace('{lang['ITEM0']}', $lang['ITEM0'], $row['name']); 
    echo $var; 
} 

你將得到:我想回家

希望這有助於人誰來到這個頁面。