【问题标题】:Multisort array in phpphp中的多排序数组
【发布时间】:2013-06-27 22:59:13
【问题描述】:

需要您的专业帮助。我有这样的数组:

array(
    array('id'=>1, 'name'=>'b'), 
    array('id'=>2, 'name'=>'a'), 
    array('id'=>3, 'name'=>'c'));

需要按name排序,但是当我使用ksort()asort()时,数组按id排序。

我尝试使用array_multisort(),但这个功能对我没有帮助。

【问题讨论】:

    标签: php arrays array-multisort


    【解决方案1】:

    我们可以使用这个功能:

    <?php
        $hold = array(
            array('id'=>1, 'name'=>'b'), 
            array('id'=>2, 'name'=>'a'), 
            array('id'=>3, 'name'=>'c'));
    
    
        //array before sorting 
        var_dump($hold);
    
    
        function aasort (&$array, $key) {
            $sorter=array();
            $ret=array();
            reset($array);
            foreach ($array as $ii => $va) {
                $sorter[$ii]=$va[$key];
            }
            asort($sorter);
            foreach ($sorter as $ii => $va) {
                $ret[$ii]=$array[$ii];
            }
            $array=$ret;
        }
    
        aasort($hold,"name");
    
    
        //array after sorting 
        var_dump($hold);
    
    
        ?>
    

    【讨论】:

      【解决方案2】:
      $ar = array(
             array('id'=>1, 'name'=>'b'),
             array('id'=>2, 'name'=>'a')
            );
      array_multisort($ar[0], SORT_ASC, SORT_STRING,
                      $ar[1], SORT_NUMERIC, SORT_DESC);
      var_dump($ar);
      

      先定义数组,然后对它们进行排序,这将使生活更轻松。

      Reference

      【讨论】:

        【解决方案3】:

        您可以将名称指定为键,然后进行排序。

         $array = array(array('id'=>1, 'name'=>'b'), array('id'=>2, 'name'=>'a'), array('id'=>3), 'name'=>'c')
        
         $newarray = array();
         foreach ($array as $key => $item) {
             $newarray[$item['name']] = $item;
         }
        
          ksort($newarray);
        

        【讨论】:

          猜你喜欢
          • 2014-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-08
          相关资源
          最近更新 更多