2015-09-23 4 views
0

Я знаю, что этот вопрос был задан раньше, но не в этом контексте (ООП):Php - Сортировка ассоциативного массива по ключу

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 возвращает пустой массив, и я не знаю, почему ..

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

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

ответ

1

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

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

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

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

Demo

1

Потому что usort возвращает boolean http://php.net/manual/en/function.usort.php. Вы хотите вернуть измененный переменный $array

+0

нормально, я отредактирован, но он возвращает ложь? –

+0

Если вы хотите, чтобы ваш код запускался, пожалуйста, измените вопрос на «Пожалуйста, исправьте мой код, чтобы он работал». Я ответил на текущий вопрос. – Amarnasan

3

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"; 
} 
?> 

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

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

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

Смежные вопросы