【问题标题】:Sorting multi-dimensional array by random key通过随机键对多维数组进行排序
【发布时间】:2021-12-27 05:38:37
【问题描述】:

如何对键是随机定义且不一致的多维数组进行排序?

这里的屏幕截图显示的是年份,然后是月份。我想按升序排列月份。

我在堆栈溢出和谷歌上发现的所有东西都显示了像array_multisort (array_column($array, 'key'), SORT_DESC, $array); 这样的方法,在我看来,只有当你知道你的密钥将是什么时它才适用。就我而言,我没有,可能是 1 个月,也可能是 12 个月,它们的顺序是随机的。

与其他方法相同

usort($table, function($a, $b) use ($column) {
    return $a[$column] <=> $b[$column];
});

任何有助于更好地理解的帮助都将是一次很好的学习体验。

结束想要的结果

【问题讨论】:

    标签: php arrays sorting


    【解决方案1】:

    您需要按键值对数组进行排序。所以如果你有一个数组

    $year = ["7" => [], "9" => [], "3" => []];
    

    你会过去

    ksort($year); // ["3" => [], "7" => [], "9" => []]
    

    见: https://www.php.net/manual/en/function.ksort.php

    还有一个运行示例: http://sandbox.onlinephpfunctions.com/code/216a48077d871dbd871445013fc838ddb1130bd4

    如果你需要申请多维数组,我建议你使用像this answer这样的递归函数: https://stackoverflow.com/a/4501406/5042856

    // Note this method returns a boolean and not the array
    function recur_ksort(&$array) {
       foreach ($array as &$value) {
           if (is_array($value)) recur_ksort($value);
       }
       return ksort($array);
    }
    

    【讨论】:

    • 我觉得你没看懂我在说什么?
    • @lzoesch sandbox.onlinephpfunctions.com/code/… 请参阅此示例。这不正是你想要的吗?
    • 我撤回我的声明。我将 recur_ksort 分配给了一个变量。我很感激,对造成的混乱表示抱歉。
    猜你喜欢
    • 2012-11-15
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    相关资源
    最近更新 更多