2014-09-24 110 views
1

說實話,我在這裏有兩個問題,一個是對Yii框架的一個新功能,另一個是我在網上找到的usort功能對我來說沒有任何意義。我還沒有找到一個用俗語來解釋發生了什麼事。Yii框架的使用

總之我有一個對象數組是這樣的:

Array 
(
[0] => stdClass Object 
    (
     [id] => 1 
     [name] => Mary Jane 
     [count] => 420 
    ) 

[1] => stdClass Object 
    (
     [id] => 4 
     [name] => Johnny 
     [count] => 234 
    ) 

[2] => stdClass Object 
    (
     [id] => 3 
     [name] => Kathy 
     [count] => 4354 
    ) 

.... 我想通過ID 對象進行排序的問題是數據是按日期排序上次更新,而比ID和我需要知道最後一個ID,因爲我所做的是從API將數據拉到我的數據庫,所以即時通訊本質上檢查,看看最後的API ID是1100,但我的數據庫最後的ID是1050,所以我知道我約50記錄背後。

,所以我必須在活動創建一個公共靜態函數模型

public static function sort_api_data_by_id($a, $b) 
    { 
     return strcmp($a->id, $b->id); 
    } 

而且在我的網頁之一,我正在運行的usort職能

usort($array, Activity::model()->sort_api_data_by_id()); 

如果它的確與衆不同,文件是活動中的一個視圖,因此它訪問活動模型中的函數,因此它不是一個不同的模型/視圖關係或任何東西。

我從另一個頁面獲得該功能,但我不明白的是我需要傳遞給參數$ a和$ b的函數,在任何示例中都沒有傳遞任何東西。 sort_api_data_by_id是活動模型中的函數。

現在雖然找到最高的id可能會更高效,而不是排序整個對象,但我仍然需要稍後處理數據並將其輸入到數據庫中,並且如果按照邏輯順序將會更容易。

回答

0

我最終發現隱藏在谷歌的解決方案。

我在活動模式把這個靜態函數:

public static function sort_api_data_by_id($a, $b){ 
    if  ($a->id == $b->id) return 0; 
    return ($a->id < $b->id) ? -1 : 1; 
} 

然後,我用類名::函數名調用它,但你放棄了($ A,$ B)。多數民衆贊成什麼最初扔我是沒有意義的有函數的參數,但我們不通過任何但我相信我們通過usort迂迴路過他們和$ a是數組和$ b是函數的結果ie是身份證更高還是更低,雖然我可能是錯的,因爲它有點難以讓你的頭,所以請把這作爲我的理解,而不是事實。我還沒有真正看到它在其他地方解釋過。

在任何情況下,那麼這usort函數通過傳遞它的陣列和靜態函數

usort($array, "Activity::sort_api_data_by_id"); 
+0

如果您的控制器模塊中的作品。 'DefaultController'不起作用 – iGbanam 2014-12-01 15:00:34