2015-09-10 3 views
0

Какие операции управления массивом необходимы? Итак, есть два массива, и я хочу, чтобы объединить следующим образом:Комбинация слияния массива с 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

Для чего нужен первый массив? – Rizier123

+0

первый массив предыдущей версии – Stanley

ответ

3

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

<?php 

    $result = []; 

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

?> 
+0

Я думаю '$ result [$ date] [$ time] = $ v;' должен быть '$ result [$ date] [$ k] = $ v;' потому что @Stanley хочет есть дата и время как ключ массива на втором уровне? –

+0

@mapek Да, исправлено – Rizier123

+1

Я пробую этот путь! Благодаря!!! – Stanley

Смежные вопросы