2014-01-05 4 views
-1

мой массив выглядит следующим образом:Sorty по полю массива PHP

array(3) { 
[1]=> array(2) { 
    ["username"]=> string(8) "bob123" 
    ["percent"]=> int(100) 
} 
[2]=> array(2) { 
    ["username"]=> string(13) "bryan123" 
    ["percent"]=> int(0) 
} 
[3]=> array(2) { 
    ["username"]=> string(8) "jim123" 
    ["percent"]=> int(0) 
} 
} 

Я хотел бы сортировать по полю процентов внутри моего массива под названием $ друзья, как бы я это сделать?

+0

Так что код вы создали, чтобы попытаться решить эту проблему? – JakeGould

+0

Возможный дубликат [Ссылка: все основные способы сортировки массивов и данных в PHP] (http://stackoverflow.com/questions/17364127/reference-all-basic-ways-to-sort-arrays-and-data-in -php) – deceze

ответ

0

Массив

$array = array(
    array("username"=> "bob123", "percent"=> 10), 
    array("username"=> "bob123", "percent"=> 9), 
    array("username"=> "bob123", "percent"=> 9) 
); 

Функция обратного вызова для usort

function callb($a, $b){ 
    if($a['percent'] == $b['percent']){ 
    return 0; 
    } 
    return ($a['percent'] > $b['percent'])? +1:-1; 
} 

Использование

usort($array,"callb"); 
print_r($array); 

https://eval.in/85986

+0

Это довольно близко! Однако, если есть две записи с тем же процентом, который удаляется! Есть идеи по этому поводу? – user3162154

+0

У меня проблема. Я проверю его сейчас –

+0

@ user3162154 обновить ответ с помощью usort. Попробуй –

3

Напишите функцию сравнения, которая объединяет два элемента в соответствии с вашим предпочтительным порядком и передает эту функцию вместе с массивом в usort.

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