此问题旨在作为有关在PHP中排序数组的问题的参考.很容易认为您的特定情况是独一无二的,值得一个新问题,但大多数实际上是本页面上其中一个解决方案的微小变化.
如果您的问题与此问题的副本相同,请仅在您能够解释为何与以下所有问题明显不同时才要求重新打开您的问题.
如何在PHP中对数组进行排序?
如何在PHP中对复杂数组进行排序?
如何在PHP中对对象数组进行排序?
有关使用PHP现有函数的实际答案,请参阅1.,有关排序算法的学术详细答案(PHP的函数实现以及您可能需要哪些非常复杂的案例),请参阅参考资料2.
我有一个像这样的阵列
Array (
[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仅适用于一维数组,我需要按两个值或更多值排序,我如何在SQL中实现这一点,按field1 asc,field2 asc排序?
我正在尝试使用多维数组执行与mySQL查询"SELECT*FROM table ORDER BY field1,field2,..."相同的操作:
$Test = array(
array("a"=>"004", "n"=>"03"),
array("a"=>"003", "n"=>"02"),
array("a"=>"001", "n"=>"02"),
array("a"=>"005", "n"=>"01"),
array("a"=>"001", "n"=>"01"),
array("a"=>"004", "n"=>"02"),
array("a"=>"003", "n"=>"01"),
array("a"=>"004", "n"=>"01")
);
function msort(&$array, $keys){
array_reverse($keys);
foreach($keys as $key){
uasort($array, sortByKey);
}
//
function sortByKey($A, $B){
global $key;
$a = $A[$key];
$b = $B[$key];
if($a==$b) return 0;
return ($a < $b)? -1 : 1 ;
}
}
//
msort($Test, array("a","n"));
//
foreach($Test as $t){
echo('<p>'.$t["a"].'-'.$t["n"].'</p>');
}
Run Code Online (Sandbox Code Playgroud)
我的理论是:如果我将多次乘法排序为最重要的密钥,那么我会按照mySQL查询的顺序排序.
但是php正在返回"警告:uasort()期望参数2是有效的回调函数,函数'sortByKey'未找到或者在第23行的/Library/WebServer/Documents/www/teste.array_sort.php中找到无效的函数名"(uasort)线)
这是一个简单的订单功能,我错过了什么?