簡體   English   中英

array_multisort對幾個數組進行排序

[英]array_multisort to sort several arrays

我已經搜索過了,但似乎找不到確切的答案。 我想使用array_multisort基於3個數組中的數值同時對3個數組進行排序。 基本上,我想制作一個與“ NFL / NHL積分榜”類似的“積分榜”表。我有3個數組,tempID(字符串),tempWins(數值),tempWinPercentage(數值)。 我需要首先根據獲勝次數同時對所有3個人進行排序,然后如果出現平局,則獲勝百分比。

我似乎無法讓array_multisort只能用於2個以上的數組,所以當他們說它可以與“幾個”數組一起使用時,可能會誤解術語。 謝謝!

您應該有一個像這樣的數據數組:

$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;
}

(可以縮短)

我似乎無法讓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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM