我尝试执行的函数从数据库中提取 6 个最新事件。然后我想测试事件是否通过某个参数彼此相关(我已经弄清楚了这个函数),但随后想从数组中删除重复项并添加下一个最近的事件。
例如,假设我有事件#1-6。事件#3 与事件#1 相关。然后我想从数组中删除事件 #3,然后将事件 #7 添加到数组中。完成后,我想检查事件 #1,2,4,5,6,7 以确保不再重复。我正在尝试继续这个过程,直到每个事件都是独一无二的。
这是我当前的代码:
public function get_user_events($limit=6, $offset= 0)
{
$user = $this->ion_auth->user()->row();
$event = $this->db->order_by("time_initiated","desc")
->get_where("events",array("user_id" => $user->id), $limit, $offset)
->result_array();
$noduplicates = FALSE;
while(!$noduplicates) {
foreach ($event as $a) {
if(test_if_repeated($a, $event)) { remove from array; $noduplicates = true }
}
// somehow need to refresh the list to get that 7th element
}
return $event;
}
最佳答案
我认为检索比您需要的更多记录然后处理所有“相关”和“重复”内容会更有效 - 然后只需返回您需要的记录数。
例如,检索最新的 30 个事件(任意数量)。然后,对“相关”和“重复”记录施展魔法。假设您还剩下 24 条记录 - 只需返回该列表中最新的 6 条记录即可。
检索和处理 30 个事件与 6 个事件相比几乎不会影响性能。
关于javascript - 使用Codeigniter,如何使用get_where,但不包含某些行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20090416/