PHP:对数组输出进行排序,但对相同的值进行随机化


PHP: sort array ouput but randomize same values

获得的最佳/最简单方法是什么

我有什么:

array('100', '100', '100', '80', '70', '70', '50', '45');

输出应该是什么样子:

100 (random order)
100 (random order)
100 (random order)
80
70 (random order)
70 (random order)
50
45

您必须使用usort或uasort(uasort保留数组的键)。使用PHP 5.3,您可以这样做:

shuffle($array); // randomize
uasort($array, function($a, $b){
    if($a === $b) {
        return rand(0, 1);
    }
    return $a < $b;
});

您可能需要在前面命名函数,如php文档所示http://www.php.net/manual/fr/function.uasort.php

您可以使用usort(http://www.php.net/manual/en/function.usort.php)或uksort,具体取决于您的要求。如果值相等,则可以选择随机返回正数或负数。

试试这样的方法:http://codepad.org/SzSeUM4u

基于以下来源的aasort:按值排序多维数组