【问题标题】:Use array in codeigniter view在 codeigniter 视图中使用数组
【发布时间】:2011-06-23 16:58:56
【问题描述】:

我是 codeIgniter 的初学者,已经在 CI 论坛和谷歌上寻找答案,甚至在这里......

好的,我已经搜索过这个,每次我找到与使用foreach() 将数据从数组中取出然后在 foreach 循环中对其进行处理有关的答案时;这不是我想做的。

我正在构建一个站点,我想在其中将站点信息(例如站点标题、描述、摘要、关键字等)存储在只有一行的数据库表中(而不是必须转到 html 并在那里进行操作。 .)

到目前为止,我的模型中有这样的东西:

    function getAll(){
    $q = $this->db->get('system');

    if($q->num_rows() > 0){
            return $q->row();
    }
}

在我的控制器中,我有:

function index(){
    $this->load->model("system_model");
    $data[] = $this->system_model->getAll();    
    $this->load->view('home', $data);
}

在我看来,我希望非常简单(html标签只是描述性的):

   <title><?php echo $this->title; ?></title>
<description><?php echo $this->description; ?></description>

正如您所见,foreach 循环在这种情况下不起作用,我认为最好的方法不是遍历控制器中的数组,然后将每个单独的数组部分作为单独的数组传递到视图中变量..

这可能吗?

编辑

我已经给第一个答案打勾,因为这让我走上了正确的轨道来找到解决方案(尽管它可能不是 100% 正确它的工作)为了让它工作我遵循第 1 个答案,但是然后在视图中我做了以下操作:

<title><?php echo$system[0]->title; ?></title>

【问题讨论】:

  • 听起来像是一个不必要的数据库调用。我希望你至少打算缓存这个。
  • 当我学会如何做时我会缓存它,现在我只是在学习

标签: php arrays codeigniter views


【解决方案1】:

给 $data[] 数组一个键名

function index(){
    $this->load->model("system_model");
    $data['mydata'] = $this->system_model->getAll();    
    $this->load->view('home', $data);
}

在视图文件中,您可以根据该键回显或循环或其他任何内容

echo $mydata

foreach($mydata as $md){
echo $md
}

在模型中查询数据库的最佳方法是执行以下操作:

function get_user_by_id($id){
    $this->db->where('id', $id);
    $query = $this->db->get('users');
    $result = $query->result_array();
    return $result;
}

【讨论】:

  • 如果要获取所有数据,请删除以下内容:$this->db->where('id,$id);
  • 取决于他是否想使用面向对象的方法来检索数据。如他的视图示例所示,他似乎更喜欢这种表示法。如果你做 OPer,使用 result();因为这将返回一个也可以使用数组表示法访问的对象。
  • 谢谢你的回复,如果我用这个方法然后做codecode 我只是得到数组,如果我尝试 $system->title;我得到一个错误..
  • 我不明白您是从哪里获得 $system 的,还是您将 $data 重命名为那个?如果您使用的是@tylerpennys 代码,那么您会将结果作为数组返回,这意味着您需要访问像 $system['title'] 这样的数据
  • 是的,抱歉,我将其重命名为 $system。谢谢你的评论,我稍后会测试这个
【解决方案2】:

给你:

在您的控制器中使用:

function index(){
    $this->load->model("system_model");
    $data = $this->system_model->getAll(); 

    $this->load->view('home', $data);
}

您的视图将如下所示:

   <title><?php echo $title; ?></title>
<description><?php echo $description; ?></decription>

此外,您的数据库查询(通常)使用 result() ,因为听起来您想要不止一行:

   function getAll(){
    $q = $this->db->get('system');

    if($q->num_rows() > 0){
            return $q->result();
    }

【讨论】:

  • 您好,感谢您的回复,使用上面的代码我仍然收到错误.. undefined variable title..
  • 如果我 var_dump $data 变量,我会得到以下信息:array 0 =&gt; object(stdClass)[18] public 'id' =&gt; string '1' (length=1) public 'title' =&gt; string 'EVECTK' (length=6) public 'decription' =&gt; string 'EVECTK is the Corporation Tool for EVE Online Corporations. It provides unparalleled functionality; and best of all - its free! ' (length=129) public 'keywords' =&gt; string 'some keywords' (length=54) ' (length=128)
  • 在您的原始代码中,您正在使用“$data[] =”,您只需在控制器中使用“$data =”,因为您无缘无故地向数组添加了额外的级别。将此与我的其他编辑一起使用,它应该可以正常工作:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-12
相关资源
最近更新 更多