Я знаю, что этот вопрос задавался ранее, но не в этом контексте (ООП):
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 возвращает пустой массив, и я не уверен, почему ..
Кто-нибудь может мне помочь с этим?
Спасибо и привет!
Здесь, внутри вашего usort
Функция второго параметра состоит из двух значений первого ClassName
а другой functionName
так что ваш второй параметр выглядит как
usort($array,['ClassName','functionName']);
Что в вашем случае это будет как
usort($array,['XYZ','modify']);
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
Так как usort
возвращает логическое значение http://php.net/manual/en/function.usort.php . Вы хотите вернуть измененную переменную $array