2015-05-15 73 views
0

有一個物體在PHP命名爲$item,並在這個對象我有動態屬性名PHP

title , title_cn, title_tw 

性質,我想創建一個自動生成基於語言屬性的功能,所以我的編碼是這樣的:

<?= $item->title . set_lang(); ?> 

而且功能:

function set_lang() { 
    $CI =& get_instance(); 
    $lang = $CI->session->userdata('site_lang'); 
    if ($lang == "english") { 
     return ""; 
    } else if ($lang == "zh_tw") { 
     return "_tw"; 
    } else if ($lang == "zh_cn") { 
     return "_cn"; 
    } 
} 

然而,n ame沒有正確生成,只是$ item->標題附加了lang代碼的字符串,例如。 my title 1234_tw, titleABC_cn等...

如何動態生成屬性?感謝您的幫助

+1

搜索變量變量 – Clive

+0

變量變量很容易理解,一旦你得到它們; P但在這種情況下不需要它們除非你想縮短代碼使其更難理解;) – SidOfc

回答

2

您應該首先連接$item->titleset_lang()並將其放入一個變量中。

然後,您可以使用該變量調用obj上的正確屬性。

例如

$itemLangTitle = $item->title . set_lang(); 

echo $item->$itemLangTitle 

您可以使用變量作爲動態特性,但要小心用戶輸入一如既往!

在旁註中,您還需要確保該屬性存在,否則您會收到錯誤。所以請確保,如果這不產生任何東西,它應該回落到英文命名或一些無阻礙的;)