2016-01-12 13 views
0

Есть ли более короткий способ написать этот код?есть ли более простой или короткий способ написать этот код?

uasort($my_array, function ($a, $b) { 
    if ($a['number'] == $b['number']) 
     return 0; 
    elseif ($a['number'] < $b['number']) 
     return 1; 
    else 
     return -1; 
}); 

Это работает, но мне нужно повторить этот код много раз.

Есть ли лучший способ сделать это?

В частности, есть лучший способ сделать это в Ларавеле?

+1

Заверните его в функции вы можете позвонить или использовать итерацию, чтобы сделать его более DRY – adeneo

+4

Если вы используете PHP7, у вас есть «космический корабль «operator (' <=> ') и может сделать' return $ a ['number'] <=> $ b ['number']; 'альтернативно, почему бы просто не вернуть $ a ['number'] - $ b ['number' ]; ' –

+1

' return $ a ['number'] == $ b ['number']? 0: $ a ['number'] <$ b ['number']? 1: -1' – adeneo

ответ

2

Вы можете использовать коллекцию Laravel, если вы хотите:

$my_array = collect($my_array)->sortBy('number')->all(); 
+1

это действительно прекрасно работает: o но по-другому .. i не хочу, чтобы это было 1,2,3,4 - это должно быть 4,3,2,1 - так что вы знаете, как я могу это сделать? – ItzMe42

+0

Как вы можете прочитать здесь https://laravel.com/docs/5.1/collections#method-sortbydesc, вы просто используете '$ my_array = collect ($ my_array) -> sortByDesc ('number') -> all(); ' –

+0

спасибо, отлично работает! – ItzMe42

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