从模型函数中排序数组列表

时间:2014-01-25 08:04:49

标签: php mysql facebook codeigniter activerecord

我在我的codeigniter应用程序中使用Facebook php sdk。下面的代码检查登录用户的 Facebook好友,并将其与数据库中用户的值进行匹配,以检查是否有任何朋友作为应用程序的用户存在。

$friends = $facebook->api('/me/friends');

$temp = array();
 foreach ($friends["data"] as $value) {

            $friendid=$this->upload_model->get_user($value["id"]);

              if (($friendid)) {

                $my_friends=$this->upload_model->get_user($value["id"]);
                $temp[]=$my_friends[0];



            }
$data['top_friends'] = $temp;

这是在控制器$this->upload_model->get_user($val)中使用我的模型完成的。

模型

public function get_user($id)
    {
        $this->db->order_by('points', 'desc'); 
        $this->db->where('id', $id);
        $q=$this->db->get('gamer', 10);
        $data = $q->result_array();
        return $data;
    }

代码返回数据库中存在的朋友,但是我想按pointsgamers中的一列)的降序排序。上面的模型代码应该按点数返回前十名朋友。我希望以最先点积分的游戏玩家的积分来命令游戏玩家。

但是,代码没有对它们进行排序,结果会以id的顺序返回并显示到视图中,因此按照它们在数据库中的输入顺序排列。如何订购退回的朋友,以便我可以在我的视图中显示前10位最高分的玩家。我假设这将在模型查询中完成?

我的观点

<?php foreach($top_friends as $friend):?>
<p><?php echo $friend['name']; ?></p>
 <?php endforeach; ?>  

如果在模型中对它进行排序是否重要,或者在这种情况下,我是否必须通过$temp数组以某种方式对它进行排序,因为它被传递给此数组。

但我如何从$temp订购此邮件。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

这是一种子数组排序。 请尝试以下代码:

添加新功能以对子阵列进行排序

function sort_points($a, $b) {
  return $b["points"] - $b["points"];
}

然后用你的数组调用usort函数:

usort($temp, "sort_points");