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

时间:2012-07-18 09:21:50

标签: php arrays

最好/最简单的方法是什么:

我有什么:

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

3 个答案:

答案 0 :(得分:4)

你必须使用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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

尝试这样的事情: http://codepad.org/SzSeUM4u

基于aasort来自: Sort Multi-dimensional Array by Value