@pasterh

Можно ли получить массив дат из отдельных массивов дня месяца и года?

Есть форма где отдельно выбирается день месяц год размножаемая jQuery.
Получаем постом три массива.
$day=array( 1, 5, 10,)
$month=array(январь, февраль, август )
$year= array(1920, 1956, 2005)
Можно ли из них получить один массив с датами. Если да то как это сделать?
  • Вопрос задан
  • 422 просмотра
Решения вопроса 3
Eridani
@Eridani
Мимо проходил
$day=array(1, 5, 10,);
$month=array('январь', 'февраль', 'август' );
$year= array(1920, 1956, 2005);
$result_arr = array();

foreach($day as $key => $d) {
  $result_arr[$key]['day'] = $d;

}
foreach($month as $key => $m) {
    $result_arr[$key]['month'] = $m;
}
foreach($year as $key => $y) {
    $result_arr[$key]['year'] = $y;
}
print_r($result_arr);
Ответ написан
nskarl
@nskarl
Вообще дизайнер
<?php

$days = [1, 5, 10];
$months = ['январь', 'февраль', 'август'];
$years = [1920, 1956, 2005];

$dates = [];

foreach($days as $key => $day) {
	$dates[] = $day . ' ' . $months[$key] . ' ' . $years[$key] ;
}

print_r($dates);
Ответ написан
Комментировать
Sanovskiy
@Sanovskiy
Веб-разработчик с 2005 года
В PHP до 5.6
$day=[1, 5, 10];
$month=['январь', 'февраль', 'август'];
$year= [1920, 1956, 2005];
$result= array_map(function($d,$m,$y){return $d.' '.$m.' '.$y;}, $day, $month, $year);
var_dump($result);


В PHP5.6+
$day=[1, 5, 10];
$month=['январь', 'февраль', 'август'];
$year= [1920, 1956, 2005];
$result= array_map(function($d,$m,$y){return $d.' '.$m.' '.$y;}, ...[$day, $month, $year]);
var_dump($result);


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

Или ещё изящнее
$result = array_map(function(){
     return sprintf('%s %s %s', ...func_get_args());
}, ...[$day, $month, $year]);


Можно ещё попытаться в array_map отдавать массивы по ссылке. Чтобы память не жрать.
...[&$day, &$month, &$year]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А в чём проблема? Пройдите циклом по всем массивам сразу и сформируйте новый.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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