2014-01-25 27 views
3

我在我的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訂購。

我該怎麼做?

回答

1

這是一種子陣列排序。 試試下面的代碼:

添加新功能來排序子陣

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

然後調用usort功能與您的陣列:

usort($temp, "sort_points"); 
+0

請問功能控制器功能內? – Tester

+0

不。如果它是控制器功能,那麼你應該用'$ this'調用。所以在你的幫手中創建這個函數。 –

+0

好,但我不承認$ a和$ b是什麼。點是我想要排序,我想要按降序排序,而且我還需要限制10個。 – Tester