如何在我的特定阵列上使用usort

时间:2013-06-07 12:09:39

标签: php arrays sorting usort

刚看了一些涉及usort的例子,我无法深入了解为我的数组制作函数。我确定它很简单,所以我想我会问这里。我正在使用树枝和红豆,但我不认为这是相关的。这是我的代码:

$user = $_SESSION['user'];
$userfol =  R::find('follow','user_id=?', array($user->id));
foreach ($userfol as $uf)
{
    $userrec = R::find('recipe','user_id=?', array($uf->following_id));
}

我想对数组$ userrec进行排序,以显示创建日期的食谱,我想将其限制为一次只显示1个食谱。有任何想法吗?

非常感谢先进。

1 个答案:

答案 0 :(得分:1)

如同在评论中所述,在数据库中执行此操作将是最有效的。查看RedBean的文档,我找到了http://redbeanphp.com/manual2_0/finding_beans。从那里开始:

$needles = R::find('needle',' haystack = :haystackname 
                              ORDER BY :sortorder', 
array( 'sortorder'=>$sortorder, ':haystack'=>$haystack ));

将此示例应用于上面的代码将按如下方式进行:

$user = $_SESSION['user'];
$userfol =  R::find('follow','user_id=? ORDER BY create_date', array($user->id));
foreach ($userfol as $uf)
{
    $userrec = R::find('recipe','user_id=?', array($uf->following_id));
}

上面示例的排序顺序不是动态的,但您可以将其替换为问号,就像用户ID一样。

当我在它时,你可以使用:name而不是问号。问号按照放在那里的顺序进行评估,并按顺序从数据数组中获取值。当以冒号开始时,它将在关联数组中查找该名称,这可能是有利的。

如果出于某种原因你想要使用usort,我会设置一个例子here。如您所见,分拣机功能会比较$ a和$ b的create_date元素,您可以将其替换为与您的应用程序相关的内容。至于你应该返回什么,引用文档:

  

比较函数必须返回小于,等于或的整数   如果第一个参数被认为是大于零   分别小于,等于或大于第二个。