【问题标题】:PHP sort multidimensional with more than 1 colum to sort by [duplicate]PHP排序多维,多于1列按[重复]排序
【发布时间】:2012-03-04 19:01:48
【问题描述】:

可能重复:
How do I sort a multidimensional array in php
Sorting a multidimensional array in PHP?

如何按高、中、低对数组进行排序(见下文)?

# Generate random events
$severity = array('high','medium','low');
$events = array();
for ($i=1,$n=10;$i<=$n;$i++) {
        $events["Country{$i}"] = array(
                'high'          =>              rand(0,100),
                'medium'        =>              rand(0,100),
                'low'           =>              rand(0,100),
                'total'         =>              'X'
        );
}

我的意思是,在底线我将有一个排序数组,其中包含所有countryX,按最高值排序,然后是中值,然后是低值 - 全部在 1 个大数组中。

尝试了不同的方法,但未能得到正确的结果。

【问题讨论】:

标签: php arrays parsing sorting multidimensional-array


【解决方案1】:
function sillySort($a, $b) {
    if ($a['high'] > $b['high']) {
         return -1;
    } else if ($a['high'] < $b['high']) {
         return 1;
    } else {
        if ($a['medium'] > $b['medium']) {
            return -1;
        } else if ($a['medium'] < $b['medium']) {
            return 1;
        } else {
            if ($a['low'] > $b['low']) {
                return -1;
            } else if ($a['low'] < $b['low']) {
                return 1;
            } else {
                return 0;
            }
        }
    }
}

uksort($events, 'sillySort');

【讨论】:

  • 不工作,$events 是一个多维数组,它无法读取 uksort 中的值。
  • 找到了一个基于 array_multisort 文档的解决方案,可在pastebin.com/taMH4Qni找到
  • 我用你的代码对此进行了测试,它确实有效....
猜你喜欢
  • 1970-01-01
  • 2019-12-28
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多