我使用一个简单的PHP模板脚本,它有一个函数将值设置为键,然后用键替换模板标签。
<?php
class Template {
protected $file;
protected $values = array();
public function __construct($file) {
$this->file = $file;
}
public function set($key, $value) {
$this->values[$key] = $value;
}
public function output() {
if (!file_exists($this->file)) {
return "Error loading template file ($this->file).<br />";
}
$output = file_get_contents($this->file);
foreach ($this->values as $key => $value) {
$tagToReplace = "[@$key]";
$output = str_replace($tagToReplace, $value, $output);
}
return $output;
}
?>
然后我有这个foreach循环,我想将所有$ post_title数据设置为post_title,然后输出所有值,但我只在foreach循环中得到一个数据元素。
<?php foreach ($post_titles as $post_title): ?>
<?php $data->set("post_title", $post_title['post_title']); ?>
<?php endforeach; ?>
<?php echo $data->output(); ?>
如果我在foreach循环中将上面的代码编辑为<?php echo $post_title['post_title']; ?>
,我将从变量$ post_titles中获取所有元素,这是一个数组,但是,使用return或set值到post_title的其他方法只会得到我是阵列中的一个元素。
如何获取foreach循环中的所有数据元素,而不是立即回显,而是保存到变量中以供以后在foreach循环之外使用。
答案 0 :(得分:0)
编辑:你必须在foreach中调用输出函数
<?php foreach ($post_titles as $post_title): ?>
<?php $data->set("post_title", $post_title['post_title']); ?>
$allData[] = $data->output();
<?php endforeach; ?>
<?php print_r($allData); ?>
使用set功能调用foreach中的输出函数。
从$ output变量中删除方括号。