2010-08-20 164 views
1

有没有什么办法来“自定义”排序数组?举例来说,如果我有以下数字:如何对PHP数组进行排序?

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

我想它命令他们以这种方式:

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

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

谢谢,杰克

+0

什么是排序逻辑?什么决定价值是向前还是向后? – Teekin 2010-08-20 23:01:11

回答

4

可以使用

  • usort - 排序通过使用用户定义的比较函数
  • uksort值阵列- 通过排序阵列使用用户定义的比较功能
  • uasort - 排序与用户定义的比较函数和阵列保持索引关系

每个这些接受一个数组和一个user-defined comparison function aka callback。你放入比较函数的内容取决于你。从PHP5.3开始,您也可以使用SplHeaps to create ordered collections

+0

谢谢!我会研究这些:) – Jake 2010-08-20 22:59:28

0

,你可能还需要看看在array_multisort()

0

这可能是更好地让数据库排序检索时的阵列与用户的设置。我认为这在PHP中排序几乎总是可取的。

编辑: 我忘记了数组可能存储为单个对象,因此数据库只是将它作为对象而不是数组处理。要启用还是服务器端(数据库服务器)排序,阵列也可以表示为单独的表:

用户名:索引0 用户名:索引1 等等

但这可能给太多的数据开销。