我有以下多维数组
[
'June 2015' => [
'LOW' => [160.50],
'MEDIUM' => [0.00],
'HIGH' => [60.80]
],
'July 2015' => [
'MEDIUM' => [226.00],
'HIGH' => [263.00],
'LOW' => [121.96]
]
]
我需要按每个内部数组的键对它们进行排序,以便它们按低、中、高的顺序排列(第一个偶然是正确的)。
我尝试了以下代码,我从中进行了调整here:
function cmp($a, $b){
$a = preg_replace('@^(LOW|MEDIUM|HIGH) @', '', $a);
$b = preg_replace('@^(LOW|MEDIUM|HIGH) @', '', $b);
return strcasecmp($a, $b);
}
foreach($live_quotations as $exp_conversion_date => $Aconversion_likelihood){
foreach($Aconversion_likelihood as $conversion_likelihood => $quotation_values){
uksort($live_quotations[$exp_conversion_date], "cmp");
}
}
但这将它们排序为高、中、低(按字母顺序升序)。如果我更改 cmp 函数中的顺序并不重要,它们总是以这种方式排序。我认为我没有正确理解这个 uksort 或 cmp 函数。
您可以使用以下比较函数:
function cmp($a, $b) {
$order = Array( 'LOW' => 0, 'MEDIUM' => 1, 'HIGH' => 2 );
return $order[$a] - $order[$b];
}
这段代码的例子是here.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)