用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3590|回复: 4
收起左侧

[HELP] 显示数据中,从controller传过来的数组问题

[复制链接]
发表于 2009-10-21 22:15:48 | 显示全部楼层 |阅读模式
view层,getnews.php

复制代码
  • foreach($query->result() as $row)




这里的$query,看说明是从controller传过来的,但是controller中并没有这个结果集啊,
只有$data['query'],为何要把模板得到的值传到数组里面呢,而这个query也只是数组的一个元素啊。
为什么直接变量就不可以呢?

这是controller的情况

复制代码
  • $data['query']=$this->GetNewsModel->getnews();
  • $this->load->view('viewnews',$data);



这里不是把$data数组传到view了么,那么view里面的$query是怎么来的呢?

望赐教!
发表于 2009-10-21 23:00:35 | 显示全部楼层
实际上就是执行了 php 的 extract 函数 http://www.w3school.com.cn/php/func_array_extract.asp
否则你怎么通过一个方法传递所有数据到视图中呢?
 楼主| 发表于 2009-10-21 23:15:40 | 显示全部楼层
理解不能

我现在的疑问就是

如果按照手册 $query=$this->db->query('SQL');
那么 foreach($query->result() as $row)
才会起作用
但是这个例子,却是 $data['query'],传递$data数组到view,而实际执行的却是数组元素query
发表于 2009-10-21 23:49:48 | 显示全部楼层
-_- extract 这个函数你知道是做什么的吧?
现在很简单,就是把 $data['query'] 变成了 $query = '';
你还可以 $data['title'] 变成 $title = ''; 等等很多。

$query=$this->db->query('SQL');
foreach($query->result() as $row)
这个和视图传递数据无关, $data['query'] = $query 就不可以吗?但如果不用 $data['query'] 是不可以的,这是 CI 规定。
其中的 query 是举例,你换成 a b c 都行,看你个人喜好。
 楼主| 发表于 2009-10-22 09:50:54 | 显示全部楼层
好的 大概 明白鸟!!

本版积分规则