Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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 向视图传递多个变量?_Php_Model View Controller_Codeigniter_Variables_View - Fatal编程技术网

Php 向视图传递多个变量?

Php 向视图传递多个变量?,php,model-view-controller,codeigniter,variables,view,Php,Model View Controller,Codeigniter,Variables,View,因此,我有两个变量$posts和$comments,分别保存posts和comments数组。我有一个单独的视图,它接受这些变量,执行foreach循环,并在同一页面上打印它们。这里的问题是,如何将这两个变量传递给视图 如果它是一个单一变量,我就这样传递它$this->load->view('myview',$myvar) 我试着像这样将其作为数组传递,但仍然不起作用 $data=array($var1,$var2); $this->load->view('myview',$data

因此,我有两个变量
$posts
$comments
,分别保存posts和comments数组。我有一个单独的视图,它接受这些变量,执行foreach循环,并在同一页面上打印它们。这里的问题是,如何将这两个变量传递给视图

如果它是一个单一变量,我就这样传递它
$this->load->view('myview',$myvar)

我试着像这样将其作为数组传递,但仍然不起作用

$data=array($var1,$var2);
$this->load->view('myview',$data);

任何帮助都将不胜感激!谢谢。

传递变量时,您需要访问视图中的变量。使用
数组($var1,$var2)是有效的,但可能不是您想要实现的

试一试

相反。有关如何访问传递给视图的变量的详细文档,请参见

使用
数组($var1,$var2)的问题
是指您将创建两个视图变量:
${0}
${1}
(数组的键成为变量名,数组中有两个键:
0
1

这些变量名是无效的标签,因此需要在视图级别上用
{}
将名称括起来


这样,您就失去了有效命名变量的能力。

使用关联数组看起来是最好的解决方案。 拿一个数组

$data = array(
    'posts' => $posts,
    'comments' => $comments,
);
$this->load->view('myview',$data);

这可能会帮助您找到解决方案。

在控制器中最简单的操作是:

$data['posts'] = $posts;
$data['comments'] = $comments;
$this->load->view('your_view', $data);
然后,在你看来,你只是简单地做一些事情,比如:

foreach($posts as $post) {
...
}

您可以保存传递给视图的$data变量中的任何对象。当我需要遍历从模型中获得的结果集时,我会这样做。

这是另一种推荐的方法,使用:

试一试


如何在视图中使用传递的参数?比如,我要传递这个变量$comments['cmt'],一旦它在我的视图中传递,它会对cmt执行foreach并单独打印输出。像这样,
foreach($cmt as$comment)
echo$comment->content希望这是清楚的。@arvid:你应该合并/合并你想传递的变量,而不是用它自己制作一个数组。在您的示例中,
$var1
将成为视图中的
${0}
$var2
将成为
${1}
。如果
$var1
是您上次评论中的
$comments
,则这将是
foreach(${0}作为$comment)
,但只需执行
$data=$var1+$var2
。看看我的答案。然后你可以像往常一样访问它们。非常感谢。这似乎传递了应该传递的变量。:)如何使用这种实现分别循环帖子和评论?@Gedrox:根据它们的变量名,因此可能不了解您的问题。请稍微编辑您的问题,以便清楚它所指的内容,希望您不介意。感谢您提供此代码片段,它可能会提供一些有限的即时帮助。通过说明为什么这是一个很好的问题解决方案来正确解释它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设。
$data['posts'] = $posts;
$data['comments'] = $comments;
$this->load->view('your_view', $data);
foreach($posts as $post) {
...
}
$data1 = 'your data';
$data2 = 123;
$data3 = array();

$this->load->view('myview', compact('data1', 'data2', 'data3');
$this->render($views_array,$data);
 $data1 = 'your data';
$data2 = 123;
$data3 = array();

$this->load->view('myview', $data1 + $data2 + $data3);