Какие операции управления массивами необходимы?
Итак, есть два массива, и я хочу объединить следующим образом:
$ обр
Array
(
[0] => 2015-08-16 22:12:04
[1] => 2015-08-16 13:20:17
[2] => 2015-08-16 11:45:47
[3] => 2015-08-16 02:35:12
[4] => 2015-08-15 19:05:02
[5] => 2015-08-15 17:35:12
[6] => 2015-08-15 09:02:25
[7] => 2015-08-15 07:12:00
[8] => 2015-08-14 22:12:04
[9] => 2015-08-14 13:20:17
[10] => 2015-08-14 11:45:47
)
другой массив ($ arr2)
Array
(
[2015-08-16 22:12:04] => 4.8
[2015-08-16 13:20:17] => 5.8
[2015-08-16 11:45:47] => 4.7
[2015-08-16 02:35:12] => 2.8
[2015-08-15 19:05:02] => 5.0
[2015-08-15 17:35:12] => 3.0
[2015-08-15 09:02:25] => 5.6
[2015-08-15 07:12:00] => 4.0
[2015-08-14 22:12:04] => 4.8
[2015-08-14 13:20:17] => 5.8
)
Я хотел бы следующий вывод:
$ arr3
Array
(
2015-08-16 => Array
(
[2015-08-16 22:12:04] => 4.8
[2015-08-16 13:20:17] => 5.8
[2015-08-16 11:45:47] => 4.7
[2015-08-16 02:35:12] => 2.8
)
2015-08-15 => Array
(
[2015-08-15 19:05:02] => 5.0
[2015-08-15 17:35:12] => 3.0
[2015-08-15 09:02:25] => 5.6
[2015-08-15 07:12:00] => 4.0
)
2015-08-14 => Array
(
[2015-08-14 22:12:04] => 4.8
[2015-08-14 13:20:17] => 5.8
[2015-08-14 11:45:26] => 4.4
)
)
Пока что я получил:
(весь цикл)
$ts = strtotime($year.'W'.$week.$i);
$thedates = date("Y-m-d", $ts);
$input = preg_quote($thedates, '~');
$input = str_replace("\-","-",$input);
$result = preg_grep('~' . $input . '~', $arr);
$a = array(
$thedates=>$result,
);
Выход:
Array
(
[1439510400] => Array
(
[8] => 2015-08-14 22:12:04
[9] => 2015-08-14 13:20:17
[10] => 2015-08-14 11:45:47
[11] => 2015-08-14 02:35:12
)
)
Array
(
[1439596800] => Array
(
[4] => 2015-08-15 19:05:02
[5] => 2015-08-15 17:35:12
[6] => 2015-08-15 09:02:25
[7] => 2015-08-15 07:12:00
)
)
Array
(
[1439683200] => Array
(
[0] => 2015-08-16 22:12:04
[1] => 2015-08-16 13:20:17
[2] => 2015-08-16 11:45:47
[3] => 2015-08-16 02:35:12
)
)
Простой цикл foreach будет делать то, что вы хотите. Просто explode()
ключ пробелом, так что вы разделите дату и время, например,
<?php
$result = [];
foreach($arr2 as $k => $v){
list($date, $time) = explode(" ", $k);
$result[$date][$k] = $v;
}
?>
Других решений пока нет …