PHP сортировка многомерного массива

Я новичок в PHP, и я не уверен, почему мой код не выводится. У меня все на месте без ошибок, и все кажется правильным. Я пытаюсь вывести имена и даты в порядке возрастания при использовании print_r () для проверки порядка. Я был бы признателен за некоторые указания по этому вопросу, поскольку я понятия не имею, где я иду не так.

$win = array('Name'=>
array('Jane Doe ', 'Nash Patel ', 'Joe Public '),
'Date'=>
array('7 October 2015 ', '14 October 2014 ', '12 October 2016 '));

foreach($win as $element => $namedate) {
echo '<strong>' . $element . '</strong><br>';
foreach($namedate as $both) {
echo $both . '<br/>';
}
}

foreach($win as $c=>$key) {
$sort_date[] = $key['Date'];
$sort_name[] = $key['Name'];
}

array_multisort($sort_name, SORT_ASC, $sort_date, SORT_ASC, $win);
print_r($win);

ВЫХОД\

Массив ([Дата] => Массив ([0] => 7 октября 2015 г. [1] => 14 октября 2014 г. [2] => 12 октября 2016 г.) [Имя] => Массив ([0] => Джейн Доу [1 ] => Нэш Патель [2] => Джо Паблик))

0

Решение

Я прочитал документы, и кажется, что

array_multisort($sort_name, SORT_ASC, $sort_date, SORT_ASC, $win);

означает, что $ win будет отсортирован по имени и дате, но сортировка по имени имеет больший приоритет по сравнению с датой.

Попробуйте добавить больше Jane Doe с разными датами, чтобы увидеть, что они отсортированы по дате.

1

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

Поскольку вы говорите, что массивы не нужно сортировать вместе, вот как разделить их и отсортировать по отдельности.

$win = array('Name'=>
array('Jane Doe ', 'Nash Patel ', 'Joe Public '),
'Date'=>
array('7 October 2015 ', '14 October 2014 ', '12 October 2016 '));$dates = $win["Date"]; //split array
$names = $win["Name"]; //split array

usort($dates, "date_sort"); // custom sort on dates
asort($names); // sort names

var_dump($dates);
Var_dump($names);function date_sort($a, $b) {
return strtotime($a) - strtotime($b);
}

https://3v4l.org/kLjRh

Выход:

array(3) {
[0]=>
string(16) "14 October 2014 "[1]=>
string(15) "7 October 2015 "[2]=>
string(16) "12 October 2016 "}

array(3) {
[0]=>
string(9) "Jane Doe "[2]=>
string(11) "Joe Public "[1]=>
string(11) "Nash Patel "}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector