@MdaUZH

Как отсортировать массив по значению?

Всем привет, есть массив вида:
array(
    0 => array('id'=> 2, 'title' => 'text', 'category' => 0),
    1 => array('id'=> 4, 'title' => 'text', 'category' => 1),
    2 => array('id'=> 5, 'title' => 'text', 'category' => 0),
);


Как привести массив к виду:

array(
    0 => array('id'=> 2, 'title' => 'text', 'category' => 0),
    2 => array('id'=> 5, 'title' => 'text', 'category' => 0),
    1 => array('id'=> 4, 'title' => 'text', 'category' => 1)
);


Сортировать по 'category'

Это нужно чтобы сформировать html с optgroup

Спасибо большое заранее
  • Вопрос задан
  • 165 просмотров
Решения вопроса 4
$array = array(
    0 => array('id'=> 2, 'title' => 'text', 'category' => 0),
    1 => array('id'=> 4, 'title' => 'text', 'category' => 1),
    2 => array('id'=> 5, 'title' => 'text', 'category' => 0),
);

function catSort($a, $b) 
{
    if ($a['category'] == $b['category']) {
        return 0;
    }
    return ($a['category'] < $b['category']) ? -1 : 1;
}

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


Результат:
Array
(
    [0] => Array
        (
            [id] => 2
            [title] => text
            [category] => 0
        )

    [1] => Array
        (
            [id] => 5
            [title] => text
            [category] => 0
        )

    [2] => Array
        (
            [id] => 4
            [title] => text
            [category] => 1
        )

)
Ответ написан
Комментировать
@VIP883
учусь
Ну или встроенной функцией php мультисорт ...по значениям id , category ...
Ответ написан
Комментировать
@bkosun
Используйте функцию array_multisort:
$array = array(
    0 => array('id'=> 2, 'title' => 'text', 'category' => 0),
    1 => array('id'=> 4, 'title' => 'text', 'category' => 1),
    2 => array('id'=> 5, 'title' => 'text', 'category' => 0),
);

$category_sort_array = array();
foreach ($array as $key => $row)
    $category_sort_array[$key] = $row['category'];

array_multisort($category_sort_array, SORT_ASC, $array);
Ответ написан
Комментировать
IIISpikerIII
@IIISpikerIII
usort($part, function ($a, $b) {                  
    return strcmp($a['category'], $b['category']);              
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы