我想从旧数组中排列一个新数组,其中有多个值,其中也有重复值(在旧数组中(。
所需的编码应如下所示
like so
$old_array = array("1", "2" ,"3", "1", "5", "2", "2", "3", "3", "3", "6");
$new_array = array("3","2","1","5","6");
新数组按值 .eg 频率的降序排列。"3"的计数为 4,"2"的计数为 3,"1"的计数为 2,依此类推
$old_array = array("1", "2" ,"3", "1", "5", "2", "2", "3", "3", "3", "6");
$values = array_count_values( $old_array );
arsort($values);
$result = array_keys($values);
输出(对于 php 5.6.35(:
$result =
array(
(int) 0 => (int) 3,
(int) 1 => (int) 2,
(int) 2 => (int) 1,
(int) 3 => (int) 6,
(int) 4 => (int) 5
)
一种选择是使用 array_count_values,然后使用 uksort 根据原始数组中的值对键进行排序。
排序后,取array_keys。
$old_array = array("1", "2" ,"3", "1", "5", "2", "2", "3", "3", "3", "6");
$result = array_count_values($old_array);
uksort($result, function($a, $b) use ($result){
return $result[$a] < $result[$b];
});
$new_array = array_keys($result);
print_r($new_array);
输出
Array
(
[0] => 3
[1] => 2
[2] => 1
[3] => 5
[4] => 6
)
Php 演示