我实际上并没有问语法和如何做到这一点。我从:codeigniter:将数组从控制器传递到视图
我需要问它实际上是如何工作的,以及这个过程的原因。
我有一个控制器类与func..
public function index()
{
//echo 'hello world';
$this->load->model('Site_model');
var_dump($this->Site_model->getAll()); // just to troubleshoot
$data['a'] = $this->Site_model->getAll();
var_dump($data); // just to troubleshoot
$this->load->view('home', $data);
}
当我试图直接访问视图
中的$data数组时抛出错误,需要作为<?php var_dump($a); ?>
为什么我们不能直接使用
public function index()
{
//echo 'hello world';
$this->load->model('Site_model');
var_dump($this->Site_model->getAll()); // just to troubleshoot
$data = $this->Site_model->getAll();
var_dump($data); // just to troubleshoot
$this->load->view('home', $data);
}
,并直接在视图页
<?php var_dump($data); ?>
。后面使用的是一个简单的过程。它只是使用了一个php函数。
extract($data);
允许所有的键在视图中作为变量使用。
查看这里的文档
在这里使用extract()有很多原因:
- 它允许我们在控制器中使用未命名的数组,如:
$this->load->view('home', array('foo' => $bar));
;当传递给另一个函数时,保持相同的非全局变量名是最简单的方法。