codeigniter 上 foreach 中的条件(排序依据)

Posted

技术标签:

【中文标题】codeigniter 上 foreach 中的条件(排序依据)【英文标题】:condition(order by) in foreach on codeigniter 【发布时间】:2014-02-10 16:21:21 【问题描述】:

我有一个模型函数可以从 db 中获取数据,并且我想将数据显示为两类。

那么有没有办法用两个foreach函数打印数据?

简单来说,我有一个内容和视图表,我只想显示新插入的数据以及这些表中某个日期范围内查看次数最多的数据。 我刚刚发送了标题、日期、user_views 和 published_date 来查看文件。

这是我的模型函数:

public function recent($language)

    $lang=$language;
    $data = $this->db
                    ->select('title,content.id,published_up','view')
                    ->from('content')
                    ->join('views','content.id = views.content_id')

                    ->where('content.language',$lang)
                    ->where('content.published_up BETWEEN DATE_SUB(CURDATE(), INTERVAL 10 DAY) AND CURDATE()')
                    ->where('content.state','1')
                    ->limit('10')       
                    ->order_by("published_up","DESC")

                    ->get();

    if ($data->num_rows > 0) 

        return $data->result();
    else
        return false;
    

这是我的观点:

<?php foreach($recent => $item)
    echo $item->title;
 ?>

现在如果我想显示观看次数最多的内容,还有其他查询或其他类型的 foreach 吗?

【问题讨论】:

【参考方案1】:

使用这个... 我不知道你在桌子上的字段是什么。

public function recent($language)

$lang=$language;
$query = "
SELECT 
   title,content.id,published_up
FROM 
   content,views
WHERE 
   content.id = views.content_id and
   content.language = $lang and
   content.published_up BETWEEN DATE_SUB(CURDATE(), INTERVAL 10 DAY) AND CURDATE() and
   content.state = 1 and
   content.state = 1 ORDER BY 
   published_up DESC LIMIT 10";

if ($query->num_rows > 0) 

    return $this->db->query($query)->result();
else
    return false;

和循环(在视图中)

<?php
  foreach($data as $item)
    $item->title;
  
?>

【讨论】:

以上是关于codeigniter 上 foreach 中的条件(排序依据)的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter中foreach循环中的未定义变量

如何从codeigniter中的foreach中删除键值?

使用codeigniter对查询进行foreach?

在视图中使用 foreach 的 Codeigniter

Codeigniter - Foreach 仅返回 1 行

使用 PHP 和 codeigniter 显示带有 foreach 函数的固定表