2014-09-24 105 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