1

刚刚查看了一些涉及 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 个食谱。有任何想法吗?

非常感谢先进。

4

1 回答 1

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,我在这里设置了一个示例。如您所见,排序函数比较了 $a 和 $b 的 create_date 元素,您可以将其替换为与您的应用程序相关的内容。至于你应该返回什么,引用文档:

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

于 2013-06-07T12:19:59.237 回答