@Sergey750il

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

Добро времени суток. Как отсортировать массив по дате?
$arr= [
		[
			"header"=>'',
			"title"=>'', 
			"data"=>'12 июнь 2021', 
		],
		[
			"header"=>'',
			"title"=>'', 
			"data"=>'30 июнь 2021', 
		],
		[
			"header"=>'',
			"title"=>'', 
			"data"=>'1 июля 2021', 
		],
		[
			"header"=>'',
			"title"=>'', 
			"data"=>'1 январь 2020', 
		]
	];
  • Вопрос задан
  • 280 просмотров
Решения вопроса 2
Tomio
@Tomio
backend developer (python, php)
Используйте функцию usort. Для нее вам нужно будет написать callback-функци сравнения, в которую будут передаваться элементы из вашего массива.
В этой callback-функции вам нужно будет сделать перевод даты вида "1 июля 2021" либо в timestamp, либо в объект DateTime, и уже использовать их в сравнении между собой.
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Ниже возможное решение. Разбирайся:
<?php
function myDataFormat($d) {
	$months = [
		'январь'=>'01',
		'июнь'=>'06',
		'июля'=>'07'
	];
	
	$splitted_data = explode(' ', $d);
	return $splitted_data[2]
		 	. $months[$splitted_data[1]]
		 	. str_pad($splitted_data[0], 2, '0', STR_PAD_LEFT) ;
}

function mySort($arr) {
	usort(
		$arr,
		function($a, $b) {
			return myDataFormat($a['data']) <=> myDataFormat($b['data']);
				
		}
	);
	
	return $arr;
}

$arr= [
    [
      "header"=>'',
      "title"=>'', 
      "data"=>'12 июнь 2021', 
    ],
    [
      "header"=>'',
      "title"=>'', 
      "data"=>'30 июнь 2021', 
    ],
    [
      "header"=>'',
      "title"=>'', 
      "data"=>'1 июля 2021', 
    ],
    [
      "header"=>'',
      "title"=>'', 
      "data"=>'1 январь 2020', 
    ]
  ];

$sorted = mySort($arr);

print_r($sorted);


PHP code online
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы