有没有办法“自定义”排序数组?例如,如果我有以下数字:
$array = array('0' => 1, '1' => 2, '2' => 3);
我希望以这种方式订购它们:
$array = array('0' => 2, '1' => 1, '2' => 3);
我该怎么做或不可能?我基本上想在每个用户的一个数据库字段中列出这个数组,但每个订单会有所不同,具体取决于用户如何对数组进行排序。
谢谢,杰克
答案 0 :(得分:4)
您可以使用
每个都接受一个数组和一个user-defined comparison function aka callback。你在比较函数中加入的是由你自己决定的。从PHP5.3起,您还可以使用SplHeaps to create ordered collections。
答案 1 :(得分:0)
您可能还想查看array_multisort()
答案 2 :(得分:0)
最好让数据库在使用用户设置检索时对数组进行排序。我认为这几乎总是优于PHP中的排序。
编辑: 我忘了数组可能存储为单个对象,因此数据库只是将其作为对象处理而不是数组。要仍然启用serverside(数据库服务器)排序,数组也可以表示为单独的表:
userID:index0 userID:index1 等...
但这可能会产生太多的数据开销。