@ligisayan

Как в php отсортировать двумерный ассоциативный массив в зависимости от параметра?

Всем привет!

Есть двумерный ассоциативный массив в php.

$array = array(
  '37' => array(
    'term_id'  => '37',
    'name'   => 'BMW',
    'slug'   => 'bmw',
     'count' => '3',
  ),
  '22' => array(
    'term_id'  => '22',
    'name'   => 'Mercedes',
    'slug'   => 'Mercedes',
     'count' => '2',
  ),
  '18' => array(
    'term_id'  => '18',
    'name'   => 'Honda',
    'slug'   => 'honda',
     'count' => '6',
  ),
  '51' => array(
    'term_id'  => '51',
    'name'   => 'Alfa Romeo',
    'slug'   => 'alfa-romeo',
  ),
  '90' => array(
    'term_id'  => '90',
    'name'   => 'Tesla',
    'slug'   => 'tesla',
     'count' => '1',
  )
);


Мне нужно отсортировать его по возрастанию в зависимости от параметра count внутри элементов, причем самого параметра может и не быть, тогда оставлять элементы в том же порядке для последующего вывода.

Не могу понять, как правильно вставить массив в определенную позицию

$buff_array = [];
foreach ($array as $item) {
    if($item->count) {
        $buff_array = array_splice( $buff_array, $count, 0, $item );
    }
    else {
        $buff_array[] = $item;
    }
}
  • Вопрос задан
  • 63 просмотра
Решения вопроса 2
@Stalinko
PHP'шник и фрилансер до мозга костей
usort($array, fn($a, $b) => ($a['count'] ?? null) <=> ($b['count'] ?? null));
Ответ написан
uasort(
    $array,
    fn($item1, $item2) => ($item1['count'] ?? 0) <=> ($item2['count'] ?? 0)
);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега PHP
php.net/usort
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы