php如何按频率顺序对多个数组中的值进行排序
我有一个包含多个数组的数组,如php如何按频率顺序对多个数组中的值进行排序,php,sorting,Php,Sorting,我有一个包含多个数组的数组,如 $A = array(); $A[0] = array("1","2","3","4","5"); $A[1] = array("1","6","7","8"); $A[2] = array("0","1","3"); 我想按照频率的顺序对多个数组中的值进行排序,然后将它们放入另一个数组,比如$B $B的价值为“1”、“1”、“1”、“3”、“3”、“0”、“2”、“4”、“5”、“6”、“7”、“8” 首先合并所有数组 $array1=数组(“颜色”=>“红色
$A = array();
$A[0] = array("1","2","3","4","5");
$A[1] = array("1","6","7","8");
$A[2] = array("0","1","3");
我想按照频率的顺序对多个数组中的值进行排序,然后将它们放入另一个数组,比如$B
$B的价值为“1”、“1”、“1”、“3”、“3”、“0”、“2”、“4”、“5”、“6”、“7”、“8”
使用哈希表计算每个数字的频率,然后按频率的降序存储在数组
$B
中,如下所示:
$hash_table = array();
foreach($A as $array){
foreach($array as $value){
if(empty($hash_table[$value])){
$hash_table[$value] = 1;
}else{
$hash_table[$value] += 1;
}
}
}
arsort($hash_table);
$B = array();
foreach($hash_table as $key => $value){
for($i = 0; $i < $value; ++$i){
$B[] = $key;
}
}
var_dump($B); // to see the contents of array $B
$hash_table=array();
foreach($A作为$array){
foreach($array作为$value){
if(空($hash_表[$value])){
$hash_table[$value]=1;
}否则{
$hash_table[$value]+=1;
}
}
}
arsort($hash_table);
$B=数组();
foreach($key=>$value的哈希表){
对于($i=0;$i<$value;++$i){
$B[]=$key;
}
}
var_dump($B);//查看数组$B的内容
使用哈希表计算每个数字的频率,然后按频率的降序存储在数组$B
中,如下所示:
$hash_table = array();
foreach($A as $array){
foreach($array as $value){
if(empty($hash_table[$value])){
$hash_table[$value] = 1;
}else{
$hash_table[$value] += 1;
}
}
}
arsort($hash_table);
$B = array();
foreach($hash_table as $key => $value){
for($i = 0; $i < $value; ++$i){
$B[] = $key;
}
}
var_dump($B); // to see the contents of array $B
$hash_table=array();
foreach($A作为$array){
foreach($array作为$value){
if(空($hash_表[$value])){
$hash_table[$value]=1;
}否则{
$hash_table[$value]+=1;
}
}
}
arsort($hash_table);
$B=数组();
foreach($key=>$value的哈希表){
对于($i=0;$i<$value;++$i){
$B[]=$key;
}
}
var_dump($B);//查看数组$B的内容
如果相同发生次数计数项目的顺序不重要,您可以使用:
// Merge all arrays
$counts = array_count_values(call_user_func_array('array_merge', $A));
// Sort by occurance
arsort($counts);
// Add [value] to new array [occurance] times
$B = array();
array_walk($counts, function($occurances, $value) use (&$B){
for($i=0;$i<$occurances;$i++) $B[] = $value;
});
echo implode(',', $B);
//合并所有数组
$counts=数组\计数\值(调用\用户\函数\数组('array \ u merge',$A));
//按发生情况分类
阿索特(计);
//将[value]添加到新数组[occurance]次
$B=数组();
数组_walk($counts,function($occurrences,$value)使用(&$B){
对于($i=0;$i如果相同发生次数计数项目的顺序不重要,您可以使用:
// Merge all arrays
$counts = array_count_values(call_user_func_array('array_merge', $A));
// Sort by occurance
arsort($counts);
// Add [value] to new array [occurance] times
$B = array();
array_walk($counts, function($occurances, $value) use (&$B){
for($i=0;$i<$occurances;$i++) $B[] = $value;
});
echo implode(',', $B);
//合并所有数组
$counts=数组\计数\值(调用\用户\函数\数组('array \ u merge',$A));
//按发生情况分类
阿索特(计);
//将[value]添加到新数组[occurance]次
$B=数组();
数组_walk($counts,function($occurrences,$value)使用(&$B){
对于($i=0;$i
$A=array();
$A[0]=数组(“1”、“2”、“3”、“4”、“5”);
$A[1]=数组(“1”、“6”、“7”、“8”);
$A[2]=数组(“0”、“1”、“3”);
//将上面的数组合并到一个数组中
$merged=array_值(调用_user_func_数组('array_merge',$A));
//获取事件计数
$counts=数组计数值($merged);
//按计数排序
阿索特(计);
//添加到所需数组
$B=数组();
foreach($k=>v)
对于($i=1;$i
$A=array();
$A[0]=数组(“1”、“2”、“3”、“4”、“5”);
$A[1]=数组(“1”、“6”、“7”、“8”);
$A[2]=数组(“0”、“1”、“3”);
//将上面的数组合并到一个数组中
$merged=array_值(调用_user_func_数组('array_merge',$A));
//获取事件计数
$counts=数组计数值($merged);
//按计数排序
阿索特(计);
//添加到所需数组
$B=数组();
foreach($k=>v)
对于($i=1;$i数组,按计数和索引顺序打印:
$temp=array();
foreach($A为$b){
foreach($b为$c){
如果(isset($tmep[$c])){
$tmep[$c]++;
}否则{
$tmep[$c]=1;
}
}
}
函数SortArrayByKeyThanValue(&$pArray、$pSortMethodForKey=SORT\u ASC、$pSortMethodForValue=SORT\u DESC){
#检查用户输入:不需要排序
如果(计数($pArray)<2)
返回;
#将$k和$v定义为数组_multisort()需要实数变量,因为用户输入是通过引用放置的
$k=数组_键($pArray);
$v=数组_值($pArray);
多端口阵列(
$v,$pSortMethodForValue,
$k,$pSortMethodForKey
);
$pArray=阵列与联合收割机($k,$v);
}
SortArrayByKeyThanValue($tmep);
$B=数组();
数组_walk($tmep,函数($occurrences,$value)使用(&$B){
对于($i=0;$i数组,按计数和索引顺序打印:
$temp=array();
foreach($A为$b){
foreach($b为$c){
如果(isset($tmep[$c])){
$tmep[$c]++;
}否则{
$tmep[$c]=1;
}
}
}
函数SortArrayByKeyThanValue(&$pArray、$pSortMethodForKey=SORT\u ASC、$pSortMethodForValue=SORT\u DESC){
#检查用户输入:不需要排序
如果(计数($pArray)<2)
返回;
#将$k和$v定义为数组_multisort()需要实数变量,因为用户输入是通过引用放置的
$k=数组_键($pArray);
$v=数组_值($pArray);
多端口阵列(
$v,$pSortMethodForValue,
$k,$pSortMethodForKey
);
$pArray=阵列与联合收割机($k,$v);
}
SortArrayByKeyThanValue($tmep);
$B=数组();
数组_walk($tmep,函数($occurrences,$value)使用(&$B){
对于($i=0;$iIs flatMap在php中可用?如果是,可以简单flatMap(A)然后排序。flatMap在php中可用吗?如果是,可以简单flatMap(A)然后排序。$merged=array_值(call_user_func_数组('array_merge',$A));和$merged=call_user_func_数组('array_merge',$A);是否相同?$merged=array_值(call_user_func_数组('array\u merge',$A));和$merged=call\u user\u func\u array('array\u merge',$A);是否相同?