2011-02-26 120 views
0

我正在爲我的下一個項目構建一個模板引擎,這很好。它用對應的值替換{tag}通過按鍵字符串獲取數組值

我想要{tag[0][key]}也被替換。所有我需要知道的是如何獲得的價值,如果我有數組和關鍵,像這樣的字符串表示:

$arr = array(
    0 => array(
     'key' => 'value' 
    ), 
    1 => array(
     'key' => 'value2' 
    ) 
); 

$tag = 'arr[0][key]'; 

echo($$tag); 

這是問題的一個非常簡單的版本,我希望你能理解。否則,我會很樂意回答有關它的任何問題。

+0

我相當困惑。您試圖訪問$ tag [0] [key],我認爲它與$ arr [0] [key]相同...那麼問題是什麼? – Nitroware 2011-02-26 15:24:27

+2

認真地說,通過在''php echo $ tag [0] ['key']?>'上寫'{tag [0] [key]}'獲得了什麼?引擎在那裏,你認爲你需要重塑它? – Gordon 2011-02-26 15:26:15

+1

模板引擎吸。沒有理由創建這樣的開銷,而不是寫一些PHP代碼。 – 2011-02-26 15:30:14

回答

0

我同意,沒有必要重新發明輪子:PHP本身出生作爲一個模板引擎,並且仍然是擅長做這個:

<?php echo $arr[0][key]; ?> 

它甚至曾經有現在反對的形式

<?= $arr[0][key] ?> 

在任何情況下,你可以做以下

$keys = array(); 
preg_match_all('|\[([^\]]*)\]|', $tag, $keys); 
$result = $arr; 
foreach ($keys[1] as $key) { 
    $result = $result[$key]; 
} 
echo "$result\n"; 
+0

你好,你有想法。我必須承認你對模板系統有用性的評論是非常真實的。雖然創建系統對我來說是一個很大的挑戰,我學到了很多有關靜態變量,方法,咖喱等等的知識!你的回答正是我所期待的,謝謝! – Esben 2011-02-26 16:08:21