我在我的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;
}
代码返回数据库中存在的朋友,但是我想按points
(gamers
中的一列)的降序排序。上面的模型代码应该按点数返回前十名朋友。我希望以最先点积分的游戏玩家的积分来命令游戏玩家。
但是,代码没有对它们进行排序,结果会以id的顺序返回并显示到视图中,因此按照它们在数据库中的输入顺序排列。如何订购退回的朋友,以便我可以在我的视图中显示前10位最高分的玩家。我假设这将在模型查询中完成?
我的观点:
<?php foreach($top_friends as $friend):?>
<p><?php echo $friend['name']; ?></p>
<?php endforeach; ?>
如果在模型中对它进行排序是否重要,或者在这种情况下,我是否必须通过$temp
数组以某种方式对它进行排序,因为它被传递给此数组。
但我如何从$temp
订购此邮件。
我该怎么做?
答案 0 :(得分:1)
这是一种子数组排序。 请尝试以下代码:
添加新功能以对子阵列进行排序
function sort_points($a, $b) {
return $b["points"] - $b["points"];
}
然后用你的数组调用usort函数:
usort($temp, "sort_points");