刚看了一些涉及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个食谱。有任何想法吗?
非常感谢先进。
答案 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元素,您可以将其替换为与您的应用程序相关的内容。至于你应该返回什么,引用文档:
比较函数必须返回小于,等于或的整数 如果第一个参数被认为是大于零 分别小于,等于或大于第二个。