PHP为键设置值数组并回显出所有值

时间:2018-01-25 08:38:49

标签: php foreach

我使用一个简单的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循环之外使用。

1 个答案:

答案 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变量中删除方括号。