Я пытаюсь отсортировать массив по одному из его элементов.
Массив выглядит так:
<?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
Все, что я хочу, это чтобы мой исходный массив активаций был отсортирован по стартовому столбцу.
Можно ли это сделать?
Я ценю любую помощь, которую вы можете оказать.
Я бы предложил просто использовать 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
в запросе, который получил их для вас, было бы лучшим решением.
Первая проблема — опечатка, где вы используете array_mutisort
вместо array_multisort
, Второй — ваш третий параметр, передаваемый этой функции, который должен быть флагом типа (см. документы).
Кроме того, если вы хотите увидеть результирующий массив, это $activations
так что вам нужно
print '<pre>';
print_r($activations);
print '</pre>';
вместо того, чтобы печатать логический результат сортировки.
Как уже отмечалось, это array_multisort()
и вам нужно извлечь start
столбец и сортировать по этому, то есть $activations
сортировать:
array_multisort(array_column($activations, 'start'), $activations);
SORT_ASC
по умолчанию, так что используйте SORT_DESC
если нужно.
Попробуй это :
array_multisort($activations, SORT_DESC, SORT_STRING);
$newactivations = $activations;
print '<pre>';
print_r($newactivations);
print '</pre>';