array_multisort对几个数组进行排序

时间:2009-12-21 02:11:14

标签: php

我已经搜索过这个,但似乎无法找到确切的答案。我想使用array_multisort基于3个数组中的数值同时对3个数组进行排序。基本上我想制作一个类似于NFL / NHL排名等的“排名”表。我有3个数组,tempIDs(字符串),tempWins(数字),tempWinPercentage(数字)。我需要首先根据胜利同时对所有3个进行排序,然后如果有平局,则赢得百分比。

我似乎无法使用array_multisort来处理超过2个数组,所以当他们说它可以使用“几个”数组时,我可能会误解这些术语。谢谢!

2 个答案:

答案 0 :(得分:5)

你应该有这样的数据数组:

$data = array(
    0 => array(
        'tempIDs' => 'something',
        'tempWins' => 10,
        'tempWinPercentage' => 50,
    ),
    1 => array(
        'tempIDs' => 'something else',
        'tempWins' => 10,
        'tempWinPercentage' => 60,
    ),
    3 => array(
        'tempIDs' => 'something more',
        'tempWins' => 20,
        'tempWinPercentage' => 50,
    ),
);

然后使用usort($data, 'my_sort_cb')

对此数组进行排序

你的回调方法应首先比较tempWins,如果它们相等,则比较tempWinPercentages:

function my_sort_cb($a, $b) {
    if ($a['tempWins'] > $b['tempWins']) return 1;
    if ($a['tempWins'] < $b['tempWins']) return -1;

    if ($a['tempWinPercentage'] > $b['tempWinPercentage']) return 1;
    if ($a['tempWinPercentage'] < $b['tempWinPercentage']) return -1;
    return 0;
}

(这可以缩短)

答案 1 :(得分:1)

  

我似乎无法获得array_multisort   使用超过2个数组,所以   也许我误解了   术语,当他们说它可以   使用“几个”数组。谢谢!

我认为它们意味着它可以用于排序两个以上的数组,但其他数组将根据第一个数组进行排序。

例如,执行此代码

$a1 = array(12, 23, 34, 45, 45, 34);
$a2 = array(234, 56, 243, 456, 34, 346);
$a3 = array(654, 56, 8, 12, 56, 90);

array_multisort($a1, $a2, $a3);

您将对数组进行排序,就像将其定义为

一样
$a1 = array(12, 23, 34, 34, 45, 45);
$a3 = array(654, 56, 8, 90, 56, 12);