代码之家  ›  专栏  ›  技术社区  ›  Lizard

排序多维数组

  •  1
  • Lizard  · 技术社区  · 14 年前

    我有以下数组,它当前是按实体计数排序创建的(由cakephp中完成的查询输出-我只需要前几个实体),我现在要为实体排序数组->标题。

    我试过和你一起做 array_multisort 但失败了。这可能吗?

    Array
    (
        [0] => Array
            (
                [Entity] => Array
                    (
                        [title] => Orange
                    )
    
                [0] => Array
                    (
                        [entitycount] => 76
                    )
    
            )
    
        [1] => Array
            (
                [Entity] => Array
                    (
                        [title] => Apple
                    )
    
                [0] => Array
                    (
                        [entitycount] => 78
                    )
            )
        [2] => Array
            (
                [Entity] => Array
                    (
                        [title] => Lemon
                    )
    
                [0] => Array
                    (
                        [entitycount] => 85
                    )
            )
    )
    
    3 回复  |  直到 12 年前
        1
  •  3
  •   RobertPitt    14 年前

    创建如下回调函数:

    function callback($value)
    {
        return isset($value['entity']['title']) ? $value['entity']['title'] : null;
    }
    

    array_multisort(array_map($myArray,'callback'), $myArray);
    
        2
  •  0
  •   Gumbo    14 年前

    试试这个:

    $keys = array_map($arr, function($val) { return $val['Entity']['title']; });
    array_multisort($keys, $arr);
    

    在这里 array_map 和一个 anonymous function (从PHP5.3开始提供,您可以使用 create_function

        3
  •  0
  •   Thariama    14 年前

    usort . 调用它使用:

    usort  ( $arrayy  , callback $cmp_function  );