Массив объединяет комбинацию с foreach

Какие операции управления массивами необходимы?
Итак, есть два массива, и я хочу объединить следующим образом:

$ обр

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
)
)

0

Решение

Простой цикл foreach будет делать то, что вы хотите. Просто explode() ключ пробелом, так что вы разделите дату и время, например,

<?php

$result = [];

foreach($arr2 as $k => $v){
list($date, $time) = explode(" ", $k);
$result[$date][$k] = $v;
}

?>
3

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

Других решений пока нет …

По вопросам рекламы [email protected]