Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php在str_replace数组中定义变量_Php_Templates_Replace - Fatal编程技术网

php在str_replace数组中定义变量

php在str_replace数组中定义变量,php,templates,replace,Php,Templates,Replace,我有一个模板系统,它用适当的内容替换诸如{HEADER}之类的文本。我使用这样的数组,使用str_replace将键替换为值 $array = array("HEADER","This is the header"); foreach($array as $var => $content) { $template = str_replace("{" . strtoupper($var). "}", $content,$template); } 现在,我尝试使

我有一个模板系统,它用适当的内容替换诸如
{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!");

有什么想法吗?如果我不清楚,请告诉我您的阵列线不应该是:

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

既然您是通过键和值访问数组项,那么您的数组行不应该是:

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

由于您是通过键和值来访问数组项的?

您在数组中循环的方式,使用:

foreach($array as $var => $content) {
    // ...
}
让我觉得你应该为你的
$array
使用关联数组

i、 例如,应这样声明:

$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);
这表明它正在工作;-)
(当
$array
以您设置它的方式声明时,它不是)


使用此选项时:

$array = array("HEADER","This is the header");
var_dump($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 = array("HEADER" => "This is the header");
var_dump($array);
您正在声明一个数组,该数组:

  • 仅包含一项
  • “标题”是关键
  • “这是标题”是值
其中:

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

使用
foreach($array as$key=>$value)
时,需要第二个;-)


并且,仅供参考,您可以在手册中查看以下页面:


您在阵列中循环的方式,使用:

foreach($array as $var => $content) {
    // ...
}
让我觉得你应该为你的
$array
使用关联数组

i、 例如,应这样声明:

$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);
这表明它正在工作;-)
(当
$array
以您设置它的方式声明时,它不是)


使用此选项时:

$array = array("HEADER","This is the header");
var_dump($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 = array("HEADER" => "This is the header");
var_dump($array);
您正在声明一个数组,该数组:

  • 仅包含一项
  • “标题”是关键
  • “这是标题”是值
其中:

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

使用
foreach($array as$key=>$value)
时,需要第二个;-)


并且,仅供参考,您可以在手册中查看以下页面:


当你说它“不起作用”时,发生了什么?你看到了什么?当错误报告打开时,您是否看到任何伴随的错误?当您说它“不工作”时,发生了什么?你看到了什么?当错误报告打开时,您是否看到任何伴随的错误?我的错是,我使用的是那种数组,我只是在这里快速键入它。是的,我知道如何使用数组和foreach。这是否意味着你的问题已经解决了?还是还有什么不起作用的?如果是这样的话,你能编辑你的问题来添加一些信息来说明什么是不起作用的吗?我的错,我使用的是那种数组,我只是在这里快速输入它。是的,我知道如何使用数组和foreach。这是否意味着你的问题已经解决了?还是还有什么不起作用的?如果是这样的话,你能编辑你的问题来添加一些信息来说明什么是不起作用的吗?