Сортировка многомерного массива PHP - PullRequest
1 голос
/ 27 сентября 2010

У меня есть следующий массив, в настоящее время он создается с сортировкой по entity_count (выводится запросом, выполненным в cakephp - я хотел только несколько верхних сущностей), теперь я хочу отсортировать массив по названию Entity->.

Я пытался сделать это с 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 ]

3 голосов
/ 27 сентября 2010

Создайте функцию обратного вызова следующим образом:

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

Затем запустите thew a array_map и multi sort

array_multisort(array_map($myArray,'callback'), $myArray);
0 голосов
/ 27 сентября 2010

Вам нужно написать пользовательскую функцию сравнения, а затем использовать usort . Вызовите его, используя:

usort  ( $arrayy  , callback $cmp_function  );
0 голосов
/ 27 сентября 2010

Попробуйте это:

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

Здесь array_map и анонимная функция (доступна с PHP 5.3, вы можете использовать create_function в предыдущих версиях) используется для получения массив заголовков, который затем используется для сортировки массива в соответствии с их заголовками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...