2013-12-16 81 views
0

我正在從一個文件加載一個變量,然後我需要根據頁面變量上的另一個回顯變量。下面是代碼在變量中迴應一個變量

<?php 
ob_start(); 
include 'states-desc/before_after_table_description.php'; 
ob_end_clean(); 
echo $alabama_after; 
?> 

現在,我需要$ state_name_after更換回聲$ alabama_after

好的,所以當已經加載在首頁的變量是$ state_name。那個州的名字就是佛羅里達州。當我放棄$ state_name_before;我需要變量變成$ florida_before並且回顯包含文件變量$ florida_before;的內容。

如果有什麼辦法可以在變量中放一個變量名?

+1

'我需要$ state_name_after.'更換回聲$ alabama_after - 什麼你的意思是? –

+2

我認爲他希望'$ {「state _ {$ name} _after」}' –

+0

在旁註上。我不知道你的包含什麼樣子或你的通用代碼結構,但你幾乎可以肯定能夠做事更容易通過把你的狀態放在某種數組結構中,而不是爲狀態單獨設置硬編碼變量。 –

回答

2

您是否在尋找類似eval()的產品?

+1

儘管這可能解決了直接的問題,但我儘量避免使用'eval';它會在你的代碼中打開一些非常危險的安全漏洞。 – andrewsi

2

可能您需要「變量變量」。

我用PHP 5.3.26測試了以下內容。

文件i.php:

<?php 
$alabama_after = "montgomery"; 

文件p.php:

<?php 

ob_start(); 
include "i.php"; 
ob_clean(); 

$state_name = "alabama"; 

$state_name_after = "{$state_name}_after"; 

// the following two echo the same thing: 
echo $alabama_after . "\n"; 
echo $$state_name_after . "\n"; 

輸出:

$ php p.php 
montgomery 
montgomery 

參見http://www.php.net/manual/en/language.variables.variable.php


但是,我想知道爲什麼當你可以使用關聯數組時使用這種方法。例如,i.php看起來是這樣的:

<?php 
$after_data = array(
    "alabama" => "montgomery" 
); 

而且p.php看起來是這樣的:

<?php 

ob_start(); 
include "i.php"; 
ob_clean(); 

$state_name = "alabama"; 

$state_name_after = $after_data[$state_name]; 

echo $state_name_after . "\n"; 
+0

謝謝。我嘗試過,但出於某種原因,當我做'$ state_name'時,我得到'alabama'。當我做'$ alabama_after'時,我從包含文件中獲取文本,但'$$ state_name_after'不會回顯我需要的變量。它只是頁面中的空白區域,沒有錯誤,即使在運行'$ state_name_after =「{$ state_name} _after」;'之前。奇怪的 – Roger

+0

我測試它確定。請參閱上面的編輯。我還建議另一種組織數據的方法。 –

+0

再次感謝。我仍然得到一個空白頁面,回聲沒有錯誤。我不確定是否需要更改php設置中的某些內容。我打算把這些數據放在數據庫中。順便說一句,我正在使用這種方法,因爲我很熟悉編輯包含並格式化它,而不必每次都去DB。我沒有建立一個管理區域進行編輯,因爲數據在那裏暫時保持不變。 – Roger