模板类不使用 str_replace 循环
好吧,我有这组代码
<?php
include "includes/config.php";
class template{
var $page;
var $built;
public $block = array();
function _start($tpl){
$this->page = $tpl;
}
function set_array($data){
$this->block[] = $data;
}
function _show(){
foreach($this->block as $k => $v){
foreach($v as $k1 => $v1){
//echo $k1."<br />";
//echo $v1."<br />";
$this->page = str_replace("{".$k1."}", $v1, $this->page);
}
}
echo $this->page;
}
}
$template = new template();
$file = "<html>
<body>
<p>{CAT}</p>
<p>{SUBCAT}</p>
</body>
</html>";
$template->_start($file);
// Category Query
while($row1 = mysql_fetch_assoc($cat)){
$template->set_array(array("CAT" => $row1['title']));
// Sub Category Query
while($row2 = mysql_fetch_assoc($subcat)){
$template->set_array(array("SUBCAT" => $row2['title']));
}
}
$template->_show();
?>
现在,当我 echo $k1 或 $v1 时,它们会以正确的顺序显示键和值,如
CAT1 SUBCAT1.1 SUBCAT1.2 CAT2 SUBCAT2.1 SUBCAT2.2
但是当它通过 str_replace 时,它只显示 CAT1 和 SUBCAT1.2 出了什么问题?
Well i have this set of codes
<?php
include "includes/config.php";
class template{
var $page;
var $built;
public $block = array();
function _start($tpl){
$this->page = $tpl;
}
function set_array($data){
$this->block[] = $data;
}
function _show(){
foreach($this->block as $k => $v){
foreach($v as $k1 => $v1){
//echo $k1."<br />";
//echo $v1."<br />";
$this->page = str_replace("{".$k1."}", $v1, $this->page);
}
}
echo $this->page;
}
}
$template = new template();
$file = "<html>
<body>
<p>{CAT}</p>
<p>{SUBCAT}</p>
</body>
</html>";
$template->_start($file);
// Category Query
while($row1 = mysql_fetch_assoc($cat)){
$template->set_array(array("CAT" => $row1['title']));
// Sub Category Query
while($row2 = mysql_fetch_assoc($subcat)){
$template->set_array(array("SUBCAT" => $row2['title']));
}
}
$template->_show();
?>
Now, when i echo $k1 or $v1 they display the keys and values in the correct order like
CAT1
SUBCAT1.1
SUBCAT1.2
CAT2
SUBCAT2.1
SUBCAT2.2
but when it goes through the str_replace its only displays the CAT1 and SUBCAT1.2 what going wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您正在覆盖 foreach() 循环内的变量 $page ;要么将其设为数组,要么将其附加到变量中。可能是:
You're overwriting the variable $page inside the foreach() loop; either you make it an array or you append to the variable. Could be: