Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php如何按频率顺序对多个数组中的值进行排序_Php_Sorting - Fatal编程技术网

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”

  • 首先合并所有数组

    $array1=数组(“颜色”=>“红色”,2,4)

    $array2=阵列(“a”、“b”、“颜色”=>“绿色”、“形状”=>“梯形”,4)

    $resultado=array\u merge($array1,$array2)

  • 见->

  • 第二,对大数组进行排序

    阿尔索特(resultado)

    见->

  • 首先合并所有数组

    $array1=数组(“颜色”=>“红色”,2,4)

    $array2=阵列(“a”、“b”、“颜色”=>“绿色”、“形状”=>“梯形”,4)

    $resultado=array\u merge($array1,$array2)

  • 见->

  • 第二,对大数组进行排序

    阿尔索特(resultado)

    见->


  • 使用哈希表计算每个数字的频率,然后按频率的降序存储在数组
    $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);是否相同?