所以,我有两个变量$posts
和$comments
分别保存帖子和注释数组,我有一个单独的视图接受这些变量,执行foreach循环并将它们打印在同一个变量上页。这里的问题是,我如何将两个变量传递给视图?
如果它是单个变量,我会像$this->load->view('myview',$myvar)
那样传递它。
我尝试将它作为这样的数组传递,但它仍然无效。
$data=array($var1,$var2);
$this->load->view('myview',$data);
任何帮助将不胜感激!感谢。
答案 0 :(得分:9)
您需要在传递时访问视图中的变量。使用array($var1,$var2);
是有效的,但可能不是您想要实现的目标。
尝试
$data = $var1 + $var2;
或
$data = array_merge($var1, $var2);
代替。有关如何访问传递给视图的变量的详细文档,请参阅 Views 。
使用array($var1,$var2);
的问题在于您将创建两个视图变量:${0}
和${1}
(数组的键成为变量名,数组中有两个键:{ {1}}和0
)。
这些变量名称是无效标签,因此您需要在视图级别将1
括起来。
通过这种方式,您无法有效地命名变量。
答案 1 :(得分:2)
控制器中最简单的事情:
$data['posts'] = $posts;
$data['comments'] = $comments;
$this->load->view('your_view', $data);
然后,在您看来,您只需执行以下操作:
foreach($posts as $post) {
...
}
您可以保存传递给视图的$ data变量中的任何对象。当我需要遍历从模型中获得的结果集时,我会这样做。
答案 2 :(得分:0)
使用关联数组看起来是最好的解决方案。 拿一个数组
$data = array(
'posts' => $posts,
'comments' => $comments,
);
$this->load->view('myview',$data);
这可能会帮助您找到解决方案。
答案 3 :(得分:0)
这是使用compact的另一种推荐方式:
$data1 = 'your data';
$data2 = 123;
$data3 = array();
$this->load->view('myview', compact('data1', 'data2', 'data3');
答案 4 :(得分:0)
试
$data1 = 'your data';
$data2 = 123;
$data3 = array();
$this->load->view('myview', $data1 + $data2 + $data3);
答案 5 :(得分:-1)
$this->render($views_array,$data);