Php 如何在Laravel中创建正确的排序数组?

Php 如何在Laravel中创建正确的排序数组?,php,laravel,Php,Laravel,我有一个数组,它按添加的日期对数据进行排序。我想按价格从高到低排序,现在信息显示如下: ['name' => 'Simple1', 'price' => 0.20], ['name' => 'Simple2', 'price' => 0.25], ['name' => 'Simple3', 'price' => 0.10], ['name' => 'Simple4', 'price' => 0.23], ['name' => 'Simple5

我有一个数组,它按添加的日期对数据进行排序。我想按价格从高到低排序,现在信息显示如下:

['name' => 'Simple1', 'price' => 0.20],
['name' => 'Simple2', 'price' => 0.25],
['name' => 'Simple3', 'price' => 0.10],
['name' => 'Simple4', 'price' => 0.23],
['name' => 'Simple5', 'price' => 0.35],
['name' => 'Simple6', 'price' => 0.28],
['name' => 'Simple5', 'price' => 0.35],
['name' => 'Simple6', 'price' => 0.28],
['name' => 'Simple2', 'price' => 0.25],
['name' => 'Simple4', 'price' => 0.23],
['name' => 'Simple1', 'price' => 0.20],
['name' => 'Simple3', 'price' => 0.10],
我需要这样的排序:

['name' => 'Simple1', 'price' => 0.20],
['name' => 'Simple2', 'price' => 0.25],
['name' => 'Simple3', 'price' => 0.10],
['name' => 'Simple4', 'price' => 0.23],
['name' => 'Simple5', 'price' => 0.35],
['name' => 'Simple6', 'price' => 0.28],
['name' => 'Simple5', 'price' => 0.35],
['name' => 'Simple6', 'price' => 0.28],
['name' => 'Simple2', 'price' => 0.25],
['name' => 'Simple4', 'price' => 0.23],
['name' => 'Simple1', 'price' => 0.20],
['name' => 'Simple3', 'price' => 0.10],
在laravel中,我试着做:
collect($items)->sortBy('price')->values()
,但这没有帮助


如何按价格从高到低排序?

正如@anyber所建议的那样。您可以使用Laravel集合帮助器

$sorted=collect($items)->sortByDesc('price');
//要删除密钥保留,只需循环并将其分配给不同的数组。
$final=[];
foreach($sorted->values()->all()作为$data){
$final[]=$data;
}
//现在使用$final发送回前端
现在,如果您想使用纯php,仍然有多种选择。其中之一是
usort

函数sortDesc($item1,$item2)
{
如果($item1['price']=$item2['price'])返回0;
退货($item1['price']<$item2['price'])?1:-1;
}
usort($items,'sortDesc');
打印(项目);
考虑到您的场景(作为json传递的数据应该进行排序,但laravel collection helper保留键),我建议您使用
usort

注意:此函数为数组中的元素指定新键。它将删除可能已分配的任何现有密钥,而不仅仅是对密钥重新排序


正如@anyber所建议的那样。您可以使用Laravel集合帮助器

$sorted=collect($items)->sortByDesc('price');
//要删除密钥保留,只需循环并将其分配给不同的数组。
$final=[];
foreach($sorted->values()->all()作为$data){
$final[]=$data;
}
//现在使用$final发送回前端
现在,如果您想使用纯php,仍然有多种选择。其中之一是
usort

函数sortDesc($item1,$item2)
{
如果($item1['price']=$item2['price'])返回0;
退货($item1['price']<$item2['price'])?1:-1;
}
usort($items,'sortDesc');
打印(项目);
考虑到您的场景(作为json传递的数据应该进行排序,但laravel collection helper保留键),我建议您使用
usort

注意:此函数为数组中的元素指定新键。它将删除可能已分配的任何现有密钥,而不仅仅是对密钥重新排序


信息技术s不工作,收到的
参数#2($flags)必须为int类型,字符串为“给定”,异常:“TypeError”“
,因为我说,我不仅有价格,我还有
名称
什么是
$flags
,你在哪里使用它?我不知道它是什么,在我的函数中我没有使用变量
$flags
它;s不工作,收到的
参数#2($flags)必须为int类型,字符串为“给定”,异常:“TypeError”“
,因为我说,我不仅有价格,我还有
名称
什么是
$flags
,你在哪里使用它?我不知道它是什么,在我的函数中我没有使用变量
$flags
hm。我尝试了第一个变量,它;在var_dump中很好,但在vuejs站点中排序没有改变:(您使用json API吗?我使用axios post,从laravel接收数据,并在vuejs站点中显示您可以添加var_dump($sorted->values()->all())为了更好地理解您的问题。代码太多了,我将其添加到pastebin:hm。我尝试了第一个变体,它在var_dump中很好,但在vuejs站点中排序没有改变:(您使用json API吗?我使用axios post,从laravel接收数据,并在vuejs站点中显示您可以添加var_dump($sorted->values()->all())为了更好地理解您的问题。代码太多,我将其添加到pastebin中: