Php 按值组洗牌数组
我正在寻找一种在PHP中按值组洗牌数组的方法 例如,我有一个排序数组:Php 按值组洗牌数组,php,arrays,sorting,grouping,shuffle,Php,Arrays,Sorting,Grouping,Shuffle,我正在寻找一种在PHP中按值组洗牌数组的方法 例如,我有一个排序数组: Array ( [peter] => 100 [paul] => 100 [mary] => 50 [andrew] => 50 [bill] => 50 [jason] => 10 [sofia] => 10 ) 我想这样洗牌: Array ( [paul] => 100 [peter] => 1
Array
(
[peter] => 100
[paul] => 100
[mary] => 50
[andrew] => 50
[bill] => 50
[jason] => 10
[sofia] => 10
)
我想这样洗牌:
Array
(
[paul] => 100
[peter] => 100
[mary] => 50
[bill] => 50
[andrew] => 50
[jason] => 10
[sofia] => 10
)
你知道一个聪明的方法吗?或者我必须写一个基于foreach的脏脚本吗?使用这个用户定义的函数,你可以在排序之前洗牌数组
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);
我通过使用arsort和函数shuffle_assoc()找到了答案,该函数在本页的第一篇用户文章中描述:
澄清一下:你想先按值再按键排序,对吗?我们在同一时间发布了完全相同的答案:)谢谢你的帮助28秒差,很好。但我是第一个。(^)但您正在使用arsort.:^)不,你的答案是+1。我不会编辑我的答案。:^)
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);
arsort($array);
print_r($array);