2010-03-18 69 views
1

我有一個模板系統,用適當的內容替換文本,如{HEADER}。我使用這樣的數組,用str_replace替換鍵值。php在str_replace數組內定義變量

$array = array("HEADER","This is the header"); 
    foreach($array as $var => $content) { 
     $template = str_replace("{" . strtoupper($var). "}", $content,$template); 
    } 

現在我正在試圖用一個定義的變量是這樣的:

define("NAME","Site Name"); 

裏面的頭值。所以我想要定義的變量在被取代的數組內,所以它看起來像這樣,但它不起作用。

$array = array("HEADER","Welcome to ".NAME."'s website!"); 

任何想法?如果IM告訴我不清楚

+0

當你說它「不起作用」,發生了什麼?你看到了什麼?錯誤報告開啓時您是否看到任何伴隨的錯誤? – webbiedave 2010-03-18 22:13:38

回答

1

應該不是你的陣列產品線是:

$array = array("HEADER" => "Welcome to ".NAME."'s website!"); 

既然你正在訪問的鍵和值的數組項?

0

您通過數組循環,使用方式:

foreach($array as $var => $content) { 
    // ... 
} 

讓我覺得你應該使用一個關聯數組$array

即,應該這樣聲明:

$array = array("HEADER" => "Welcome to ".NAME."'s website!"); 


而且,作爲一個示範,這裏的代碼示例:

$template = <<<TPL 
Hello, World ! 
{HEADER} 
And here's the content ;-) 
TPL; 

define("NAME","Site Name"); 

$array = array("HEADER" => "Welcome to ".NAME."'s website!"); 
foreach($array as $var => $content) { 
    $template = str_replace("{" . strtoupper($var). "}", $content,$template); 
} 

var_dump($template); 

和輸出我明白了:

string 'Hello, World ! 
Welcome to Site Name's website! 
And here's the content ;-)' (length=73) 

這表明它的工作;-)
(它不是,當$array被宣佈爲y OU設置)


當使用這樣的:

$array = array("HEADER","This is the header"); 
var_dump($array); 

您聲明一個包含兩個元素的數組:

array 
    0 => string 'HEADER' (length=6) 
    1 => string 'This is the header' (length=18) 


在另一方面,在使用這樣的:

$array = array("HEADER" => "This is the header"); 
var_dump($array); 

您聲明一個數組:

  • 包含一個項目
  • 「頭」是關鍵
  • 和「這是標題」爲價值

其中給出:

array 
    'HEADER' => string 'This is the header' (length=18) 


當使用foreach ($array as $key => $value),你需要第二個;-)


而且,純粹是爲了參考,你可以看看,在手冊中,以下頁面:

+0

我不好使用那種數組,我只是在這裏飛了。是的,我知道如何使用數組和foreach .. – john 2010-03-19 00:22:12

+0

這是否意味着您的問題解決?還是還有一些*不起作用*?如果是這樣,你可以編輯你的問題來添加一些信息來說明什麼*不起作用*是什麼意思? – 2010-03-19 05:27:02