【问题标题】:Sorting a multi-dimentsional associative array of arrays对数组的多维关联数组进行排序
【发布时间】:2012-12-17 00:45:16
【问题描述】:

就像标题一样,我不知道从哪里开始,使用 asort() 和 sort() 并没有像我想象的那样有帮助。基本上我有一个这样的数组:

$array = array(
    'array_c' => array(
        'array_b' => (
            array('object' => 'e some Object'),
            array('object' => 'b some Object'),
        ),
        'array_a' => (
            array('object' => 'awesome Object'),
        ),
    ),
    'array_a' => array(
        'array_e' => (
            array('object' => 'e some Object'),
        ),
        'array_a' => (
            array('object' => 'b awesome Object'),
        );
    );
);

所以我在看asort,因为我想保持关联不变,我开始编写的函数是:

function sort_me(some_array){
    $new_array = asort(some_array);
    return $new_array;
}

这个函数然后接受 $array['array_c'] 以便你得到一个按字母排序的数组,如下所示:

    'array_c' => array(
        'array_a' => (
            array('object' => 'awesome Object'),
        ),
        'array_b' => (
            array('object' => 'b some Object'),
            array('object' => 'e some Object'),
        ),

    ),

有人能告诉我为什么我的功能不起作用吗?我是否误解了 asort 的力量?

【问题讨论】:

  • 如果您想根据字符串 keys 进行排序,则需要 ksort() ;-)
  • 真的吗?嗯,我想看看 kSort()。我不这么认为,据此它将对键进行排序,如果您查看我的最终结果,则该值是按字母顺序排列的。我传入密钥以对其值进行排序。 k sort 也不做任何事情,因为数组仍然未排序。

标签: php sorting multidimensional-array associative-array asort


【解决方案1】:

ksort 是要走的路,但是 ksort 不会返回一个新排序的数组:

http://us.php.net/ksort

它返回一个布尔值 -> 如果数组可以排序,则返回 true,否则返回 false...

这段代码可以满足你的需要:

ksort($array);
foreach($array as $key=>$value){
    ksort(value);
    $array[$key]=$value;
}
print_r($array);

【讨论】:

    猜你喜欢
    • 2011-12-20
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 2017-12-01
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多