Сортировать ассоциативный массив по ключу

Я знаю, что этот вопрос задавался ранее, но не в этом контексте (ООП):

class XYZ {

public function index() {

$array = [
[
'id' => 1,
'name' => 'Alpha'
],
[
'id' => 2,
'name' => 'Beta'
],
[
'id' => 3,
'name' => 'Gamma'
]
];

$newArray = usort($array, 'modify');

return $newArray;

}

public function modify($a, $b) {

return $b['name'] - $a['name'];

}

}

Это indexAction возвращает пустой массив, и я не уверен, почему ..

Кто-нибудь может мне помочь с этим?

Спасибо и привет!

0

Решение

Здесь, внутри вашего usort Функция второго параметра состоит из двух значений первого ClassName а другой functionName так что ваш второй параметр выглядит как

usort($array,['ClassName','functionName']);

Что в вашем случае это будет как

usort($array,['XYZ','modify']);

демонстрация

1

Другие решения

ksort — сортировка массива по ключу

bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

Сортирует массив по ключу, сохраняя ключ к корреляции данных. Это полезно в основном для ассоциативных массивов.

<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>

Приведенный выше пример выведет:

а = оранжевый
б = банан
с = яблоко
д = лимон

Для получения дополнительной информации : http://php.net/manual/en/function.ksort.php

3

Так как usort возвращает логическое значение http://php.net/manual/en/function.usort.php . Вы хотите вернуть измененную переменную $array

1