@marenco_victor

Как правильно сделать сортировку массива?

Здравствуйте,
подскажите как отсортировать массив такого вида: Array ( [0] => Array ( [ID] => 16863 [DIST] => 78.4665910403 ) [1] => Array ( [ID] => 25676 [DIST] => 74.2454146892 ) [2] => Array ( [ID] => 25687 [DIST] => 76.4567423542 ))
По возрастанию, по ключу DIST?

На выходе хочу получить массив такого вида:
Array (
[0] => Array ( [ID] => 25676 [DIST] => 74.2454146892 )
[1] => Array ( [ID] => 25687 [DIST] => 76.4567423542 )
[2] => Array ( [ID] => 16863 [DIST] => 78.4665910403 )
)
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
frolover
@frolover
$array = [
        ['id' => 16863, 'DIST' => 78.4665910403],
        ['id' => 25676, 'DIST' => 74.2454146892],
        ['id' => 25687, 'DIST' => 76.4567423542],
    ];

print_r($array)

Array
(
    [0] => Array
        (
            [id] => 16863
            [DIST] => 78.4665910403
        )

    [1] => Array
        (
            [id] => 25676
            [DIST] => 74.2454146892
        )

    [2] => Array
        (
            [id] => 25687
            [DIST] => 76.4567423542
        )

)


$newArray = $array;

    usort($newArray, function ($item1, $item2) {
        return $item1['DIST'] == $item2['DIST'] ? 0 : $item1['DIST'] < $item2['DIST'] ? -1 : 1;
    });

print_r($newArray)

Array
(
    [0] => Array
        (
            [id] => 25676
            [DIST] => 74.2454146892
        )

    [1] => Array
        (
            [id] => 25687
            [DIST] => 76.4567423542
        )

    [2] => Array
        (
            [id] => 16863
            [DIST] => 78.4665910403
        )

)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@entermix
Используйте функцию array_multisort

UPD для ленивых:

$dist_sort_array = array();
foreach ($items as $key => $value)
    $dist_sort_array[$key] = $value['dist'];

array_multisort($dist_sort_array, SORT_ASC, $items);
Ответ написан
Ваш ответ на вопрос

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

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