我有一个模板系统,用适当的内容替换{HEADER}
等文本。我使用这样的数组,用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!");
有什么想法吗?告诉我,如果我不清楚
答案 0 :(得分:1)
你的阵列不应该是:
$array = array("HEADER" => "Welcome to ".NAME."'s website!");
由于您是按键和值访问数组项吗?
答案 1 :(得分: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
按照你设定的方式宣布时,它不是这样的)
使用时:
$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)
时,您需要第二个; - )
而且,仅供参考,您可以在手册中查看以下页面: