簡體   English   中英

如何排序在php中具有負值的關聯數組?

[英]how to sort associative array having negative values descending in php?

我正在在線考試網站上工作。 在這種情況下,我有一個關聯數組,其中鍵作為小節的名稱,值作為各個小節的得分。 所以我想根據值以降序對該數組進行排序。 但是我的價值觀是負面的。 我已使用arsort函數按值對關聯數組進行排序,但對負值不起作用。 實際上,我想顯示分數最低的小節。 我正在提供我的代碼。 請幫我解決這個問題。

Array
(
    [sentence-equivalence] => -6
    [reading-comprehension] => -16
    [text-completion] => -20
    [algebra] => -24
    [geometry] => -26
    [arithmetic] => -31
    [common-data] => -37
    [statistics] => -38
)

您可以分別使用usortarray_reverse ,或者如果您更喜歡一種方法,則可以只使用uasort並傳遞自己的比較器函數。 這里是例子。 希望能有所幫助。

$array = array(
    'sentence-equivalence' => -6,
    'reading-comprehension' => -16,
    'text-completion' => -20,
    'algebra' => -24,
    'arithmetic' => -31,
    'geometry' => -26,
    'common-data' => -37,
    'statistics' => -38,
);

asort($array, SORT_NUMERIC);
$array = array_reverse($array, true); // true stands for preserve keys.

var_dump($array);

// Otherwise you might also use uasort:

uasort($array, function($a, $b) { 
    return $a < $b;
});

使用array_multisort並將第二個參數作為SORT_DESC 嘗試這個

$s = Array
(
    'sentence-equivalence' => -6,
    'reading-comprehension' => -16,
    'text-completion' => -20,
    'algebra' => -24,
    'arithmetic' => -31,
    'geometry' => -26,
    'common-data' => -37,
    'statistics' => -38,
);


array_multisort($s, SORT_DESC); //array_multisort($s, SORT_ASC); for ascending order
print '<pre>';
print_r($s);

暫無
暫無

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

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