按值组随机播放阵列

mim*_*ipc 4 php arrays sorting grouping shuffle

我正在寻找一种通过PHP中的值组来对数组进行混洗的方法.

例如,我有一个排序数组:

Array
(
    [peter] => 100
    [paul] => 100
    [mary] => 50
    [andrew] => 50
    [bill] => 50
    [jason] => 10
    [sofia] => 10
)
Run Code Online (Sandbox Code Playgroud)

而且我想以这种方式洗牌:

Array
(
    [paul] => 100
    [peter] => 100
    [mary] => 50
    [bill] => 50
    [andrew] => 50
    [jason] => 10
    [sofia] => 10
)
Run Code Online (Sandbox Code Playgroud)

你知道一个聪明的方法吗,或者我是否必须写一个基于foreach的脏脚本?

sec*_*tus 5

使用此用户定义的函数shuffle_assoc,您可以在排序之前对数组进行洗牌.

function shuffle_assoc(&$array) {
        $keys = array_keys($array);
        shuffle($keys);
        foreach($keys as $key) {
            $new[$key] = $array[$key];
        }
        $array = $new;
        return true;
    }
$array = array('peter' => 100
    , 'paul' => 100
    , 'mary' => 50
    , 'andrew' => 50
    , 'bill' => 50
    , 'jason' => 10
    , 'sofia' => 10);

shuffle_assoc($array);
asort($array);
array_reverse($array);
var_dump($array);
Run Code Online (Sandbox Code Playgroud)