如何排序PHP数组?

时间:2010-08-20 22:45:52

标签: php mysql

有没有办法“自定义”排序数组?例如,如果我有以下数字:

$array = array('0' => 1, '1' => 2, '2' => 3);

我希望以这种方式订购它们:

$array = array('0' => 2, '1' => 1, '2' => 3);

我该怎么做或不可能?我基本上想在每个用户的一个数据库字段中列出这个数组,但每个订单会有所不同,具体取决于用户如何对数组进行排序。

谢谢,杰克

3 个答案:

答案 0 :(得分:4)

您可以使用

  • usort - 使用用户定义的比较函数
  • 按数值对数组进行排序
  • uksort - 使用用户定义的比较函数
  • 按键排序数组
  • uasort - 使用用户定义的比较函数对数组进行排序,维护索引关联

每个都接受一个数组和一个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 等...

但这可能会产生太多的数据开销。