У меня есть следующий массив, он в настоящее время создан, отсортированный по entity_count (выводимый запросом, сделанным в cakephp – мне нужны только самые лучшие сущности), теперь я хочу отсортировать массив для Entity-> title.
Я попытался сделать это с помощью 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 ) ) )
Создайте функцию обратного вызова следующим образом:
function callback($value) { return isset($value['entity']['title']) ? $value['entity']['title'] : null; }
Затем запустите его массив array_map и multi sort
array_multisort(array_map($myArray,'callback'), $myArray);
Попробуй это:
$keys = array_map($arr, function($val) { return $val['Entity']['title']; }); array_multisort($keys, $arr);
Здесь array_map
и анонимная функция (доступная с PHP 5.3, вы можете использовать create_function
в предыдущих версиях) используется для получения массива титров, который затем используется для сортировки массива в соответствии с их названиями.
Вам нужно написать пользовательскую функцию сравнения, а затем использовать usort . Вызовите его, используя:
usort ( $arrayy , callback $cmp_function );