@semechki
Я не фрилансер, просто пишу код для себя.

Как мне записать дни через тире или запятую, разными вариациями?

Всем снова привет, я опять к вам :)
У меня есть массив, который приходит с базы данных.
$block = array(0 => 'Пн', 1 => 'Ср', 2 => 'Чт', 3 => 'Пт');

И до меня не доходит как можно сделать вариативную запись чтобы получилось по типу:
Пн, Ср-Пт
Притом что варианты могут быть разными
$block = array(0 => 'Вт', 1 => 'Ср', 2 => 'Чт', 3 => 'Сб');

Тут должно получиться: Вт-Чт, Сб
Я уже весь мозг поломала, не могу никак понять как это сделать, пожалуйста помогите, заранее спасибо!
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Попробуйте так:
function group_days($block) {
	$week = array('Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб');
	$res = [];

	foreach ($block as $id=>$day) {
		if ($id == 0) {
			$period = [$day];
		} else {
			if (array_search($day, $week)-array_search(end($period), $week)==1) {
				$period[1] = $day;
			} else {
				$res[] = $period;
				$period = [$day];
			}
		}
	}

	$res[] = $period;
	
	$res = array_map(
		function($el) {return implode('-', $el);},
		$res
	);

	return implode(', ', $res);
}


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

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

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