doukao8851 2017-03-24 22:28
浏览 37

Array_multisort不按第二个数组排序

I have a multidimensional array and I would like to sort it so that both arrays are sorted by the flag SORT_NATURAL and then either SORT_ASC or SORT_DESC

So from what I understand it should look like this:

array_multisort($array1, SORT_NATURAL, SORT_ASC, $array2, SORT_NATURAL, SORT_ASC, $array); 

But it seems to only be applying the SORT_NATURAL to the $array1 and the $array2 is not sorted at all, not even the sort direction is applied.

But as soon as I remove the SORT_NATURAL form $array2, the sort direction works.

So- $array1 sorts perfectly fine, but $array2 does not sort at all.

What could be the problem? Am I missing something?

public function sortMultiDimensional(&$array, $subKey, $subKey2, $sortorder_packing_bool=false, $sortorder_packing_secondary_bool=false) {
    $array1 = array();
    $array2 = array();
    foreach ($array as $key => $row) {
        $array1[$key]  = $row[$subKey];
        $array2[$key] = $row[$subKey2];
    }
    if($sortorder_packing_bool)
        $sortorder_packing_bool = SORT_ASC;
    else
        $sortorder_packing_bool = SORT_DESC;

    if($sortorder_packing_secondary_bool)
        $sortorder_packing_secondary_bool = SORT_ASC;
    else
        $sortorder_packing_secondary_bool = SORT_DESC;

    array_multisort($array1, $sortorder_packing_bool, SORT_NATURAL, $array2, $sortorder_packing_secondary_bool, SORT_NATURAL, $array);
}
  • 写回答

1条回答 默认 最新

  • dongshang1934 2017-03-25 05:16
    关注

    Check this example,

    $data = [];
    $data[] = array('volume' => 67, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 1);
    $data[] = array('volume' => 85, 'edition' => 6);
    $data[] = array('volume' => 98, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 6);
    $data[] = array('volume' => 67, 'edition' => 7);
    
    foreach ($data as $key => $row) {
        $volume[$key]  = $row['volume'];
        $edition[$key] = $row['edition'];
    }
    
    array_multisort($volume, SORT_DESC,SORT_NATURAL, $edition, SORT_ASC,SORT_NATURAL, $data);
    
    
    print_r($data);
    

    Check here working code.

    It is like group by a,b.

    SORT_NATURAL working like this for example.

    评论

报告相同问题?

悬赏问题

  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?