Функция array_mutisort в PHP не работает

Я пытаюсь отсортировать массив по одному из его элементов.
Массив выглядит так:

    <?php
$activations = array();

$activations[0] = array();
$activations[0]['name'] = 'John Doe';
$activations[0]['start'] = '2016-12-15T10:42:15';

$activations[1] = array();
$activations[1]['name'] = 'Jane Doe';
$activations[1]['start'] = '2017-01-15T10:42:15';

$activations[2] = array();
$activations[2]['name'] = 'James Bond';
$activations[2]['start'] = '2017-01-16T10:42:15';

print '<pre>';
print_r($activations);
print '</pre>';

$newactivations = array_mutisort($activations, SORT_DESC, 'start');

print '<pre>';
print_r($newactivations);
print '</pre>';
?>

Что я делаю неправильно?
Я получаю фатальную ошибку на array_multisort
Все, что я хочу, это чтобы мой исходный массив активаций был отсортирован по стартовому столбцу.
Можно ли это сделать?
Я ценю любую помощь, которую вы можете оказать.

-1

Решение

Я бы предложил просто использовать usort вместо этого.

$activations = [
['name' => 'John Doe', 'start' => '2016-12-15T10:42:15'],
['name' => 'Jane Doe', 'start' => '2017-01-15T10:42:15'],
['name' => 'James Bond', 'start' => '2017-01-16T10:42:15']
];

var_dump($activations);

usort($activations, function($a, $b) {
return strcmp($b['start'], $a['start']);
});

var_dump($activations);

Конечно, если этот массив пришел из базы данных, используя ORDER BY start DESC в запросе, который получил их для вас, было бы лучшим решением.

0

Другие решения

Первая проблема — опечатка, где вы используете array_mutisort вместо array_multisort, Второй — ваш третий параметр, передаваемый этой функции, который должен быть флагом типа (см. документы).

Кроме того, если вы хотите увидеть результирующий массив, это $activations так что вам нужно

print '<pre>';
print_r($activations);
print '</pre>';

вместо того, чтобы печатать логический результат сортировки.

0

Как уже отмечалось, это array_multisort() и вам нужно извлечь start столбец и сортировать по этому, то есть $activations сортировать:

array_multisort(array_column($activations, 'start'), $activations);

SORT_ASC по умолчанию, так что используйте SORT_DESC если нужно.

0

Попробуй это :

array_multisort($activations, SORT_DESC, SORT_STRING);

$newactivations = $activations;
print '<pre>';
print_r($newactivations);
print '</pre>';
-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector