PHP按两个字段值sorting数组
我有一个这样的数组
arrays(
  [0] => Array(“destination”=>“Sydney”,
                “airlines”=>“airline_1”,
                “one_way_fare”=> 100,
                “return_fare => 300
        )
  [2] => Array(“destination”=>“Sydney”,
                “airlines”=>“airline_2”,
                “one_way_fare”=> 150,
                “return_fare => 350
        )
  [3] => Array(“destination”=>“Sydney”,
                “airlines”=>“airline_3”,
                “one_way_fare”=> 180,
                “return_fare => 380
        )
 )
如何通过return_fare asc,one_way_fare asc来分类价值?
我试过array_multisort(),但我结束了混淆数据..
asort只适用于一维数组,我需要sorting的两个值或更多,我怎么能达到这一点,在SQL中,由field1 asc,field2 asc?
 array_multisort()是正确的函数,你必须搞砸了: 
 // Obtain a list of columns foreach ($data as $key => $row) { $return_fare[$key] = $row['return_fare']; $one_way_fare[$key] = $row['one_way_fare']; } // Sort the data with volume descending, edition ascending array_multisort($return_fare, SORT_ASC, $one_way_fare, SORT_ASC, $data); 
 如果你看一下PHP的手册页array_multisort()的注释,你可以find一个非常有用的array_orderby()函数,它允许你缩短上面的这个: 
 $sorted = array_orderby($data, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC); 
 为了避免循环使用array_column() (从PHP 5.5.0开始): 
 array_multisort(array_column($data, 'return_fare'), SORT_ASC, array_column($data, 'one_way_fare'), SORT_ASC, $data); 
 除了需要先构build列数组的array_multisort()之外,还有不需要这样的东西的usort() 。 
 usort($data, function($a, $b) { $rdiff = $a['return_fare'] - $b['return_fare']; if ($rdiff) return $rdiff; return a['one_way_fare'] - $b['one_way_fare']; }); // anonymous function requires PHP 5.3 - use "normal" function earlier 
 或者你可以使用uasort如下 
 uasort($arr, function($a,$b){ $c = $a['return_fare'] - $b['return_fare']; $c .= $a['one_way_fare'] - $b['one_way_fare']; return $c; }); 
小提琴
哦,我又设法解决了我自己的问题。
   
函数array_multi_sort($ array,$ on1,$ on2,$ order = SORT_ASC)
     {
         foreach($ array为$ key => $ value){
         $ one_way_fares [$ key] = $ value [$ on2];
         $ return_fares [$ key] = $ value [$ on1];
         }
        在array_multisort($ return_fares,$顺序,$ one_way_fares,$顺序,$arrays);
     }
事情是我错过了array_multisort($ return_fares,$ order,$ one_way_fares,$ order,$ array)上的最后一个参数$ array。 早!