【问题标题】:How can I do sorting of associative multidimensional array by keys, in PHP?如何在 PHP 中通过键对关联多维数组进行排序?
【发布时间】:2011-08-18 20:50:59
【问题描述】:

我有以下数组:

$data['uploads']['ccc'] = 'something';
$data['uploads']['bbb'] = 'something';
$data['uploads']['aaa'] = 'something';
$data['downloads']['ccc'] = 'something';
$data['downloads']['aaa'] = 'something';
$data['downloads']['bbb'] = 'something';

我需要它按字母顺序按键排序,所以最终结果需要是:

$data['downloads']['aaa'] = 'something';
$data['downloads']['bbb'] = 'something';
$data['downloads']['ccc'] = 'something';
$data['uploads']['aaa'] = 'something';
$data['uploads']['bbb'] = 'something';
$data['uploads']['ccc'] = 'something';

尝试了各种自定义排序功能,没有运气..有什么想法吗?

【问题讨论】:

标签: php sorting multidimensional-array associative-array


【解决方案1】:
ksort($data);

http://php.net/manual/en/function.ksort.php

同样来自 PHP 文档中的 cmets:

这是一个按键递归排序多维数组的函数:

function deep_ksort(&$arr) { 
    ksort($arr); 
    foreach ($arr as &$a) { 
        if (is_array($a) && !empty($a)) { 
            deep_ksort($a); 
        } 
    } 
} 

【讨论】:

  • 这个函数不会递归运行……当它返回时,只会对最外层数组的键进行排序。
  • @Christopher Armstrong 我刚刚添加了一个函数“deep_keysort”来处理多维你看到了吗?
【解决方案2】:

您可以使用 array_multisort http://www.php.net/manual/en/function.array-multisort.php

<?php
   $ar = array(
   array("10", 11, 100, 100, "a"),
   array(   1,  2, "2",   3,   1)
  );
  array_multisort($ar[0], SORT_ASC, SORT_STRING,
            $ar[1], SORT_NUMERIC, SORT_DESC);
  var_dump($ar);
 ?>

【讨论】:

    猜你喜欢
    • 2012-11-15
    • 1970-01-01
    • 2017-12-01
    • 2011-12-20
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多