繁体   English   中英

如何对多维数组(PHP)进行排序?

[英]How to sort multi-dimensional array (PHP)?

即使键name, store_id, product etc. )如何按pos属性对该数组排序

[Attributes] => Array
(
    [name] => Array
        (
            [pos] => 30
        )

    [store_id] => Array
        (
            [pos] => 10
        )

    [product] => Array
        (
            [pos] => 20
        )

)

编辑:性能当然很重要。

看看PHP函数array_multisort

http://php.net/manual/zh/function.array-multisort.php

注释中有一个example-function,对您来说应该没问题:

function array_orderby()
{
    $args = func_get_args();
    $data = array_shift($args);
    foreach ($args as $n => $field) {
        if (is_string($field)) {
            $tmp = array();
            foreach ($data as $key => $row)
                $tmp[$key] = $row[$field];
            $args[$n] = $tmp;
            }
    }
    $args[] = &$data;
    call_user_func_array('array_multisort', $args);
    return array_pop($args);
}

// $dataArray is the array that contains your data
$sorted = array_orderby($dataArray, 'pos', SORT_DESC);

您可以使用uasort() ,它使您可以定义排序逻辑并维护关联索引。 请注意,它会更改原始数组,并且仅基于成功返回布尔值。

uasort($your_array, function($a, $b) {
    return $a['pos'] > $b['pos'];
});

我的示例>> PHP 5.3,但对于较旧的版本,您也可以使用普通的比较功能。

有关详细信息,请参见uasort()文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM