2015-01-15 3 views
0

У меня есть массив как этотСортировка ассоциативного массива по конкретным ключевым оседающей в PHP

array('p1'=>array('a'=>0,'b'=>'p1'),'p2'=>array('a'=>4,'b'=>'p2'),'p3'=>array('a'=>1,'b'=>'p3')) 

, и я хочу, чтобы отсортировать данные по ключевым a это так выглядит, как этот

array('p2'=>array('a'=>4,'b'=>'p2'),'p3'=>array('a'=>1,'b'=>'p3'),'p1'=>array('a'=>0,'b'=>'p1')) 

Это ассоциативный многомерный массив, и я хочу, чтобы массивы второго уровня сортировались по одному конкретному ключу (в примере a)

Я нашел функцию uksort и передал эту функцию

function sortByA($a,$b){ 
    if($a['a'] < $b['a']) return -1; 
    return 1; 
} 

, но он говорит сообщение: Illegal строка смещения 'количество'

Можете ли вы помочь?

+0

У вас нет свойства «count» в ваших массивах, следовательно, ошибка. Я думаю, вы хотите что-то посчитать, cso используйте 'count()' вместо этого. –

+1

Разве вы не имеете в виду '' a'' вместо '' count''? – L3viathan

+0

При копировании кода вам, возможно, придется отрегулировать некоторые вещи, чтобы заставить его работать с вашим кодом/данными. – AbraCadaver

ответ

0

В сообщении говорится: Недопустимое смещение строки «count», что связано с тем, что вы пытаетесь получить доступ к индексу «count» в вашей функции sortByCount. Вам лучше использовать индекс «a».

Кроме того, uksort() сортирует массив по клавишам, в то время как вам нужно сортировать по 'значению'. Поэтому используйте usort() вместо uksort(). Подпись совпадает с uksort(). Итак, просто замените «count» на «a» в своей функции и передайте его на usort()

+0

это был всего лишь тип. Я имел в виду 'a' и no' count' –

+0

Хорошо. Вы получили его, используя usort()? – Neal

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