2016-06-21 115 views
0

我想在一個陣列中合併元素;如果StartingDateTime有一個共同的價值,隨着合併陣列合併數組中的元素符合條件

的相應值

待辦事項創建於TWHour和TEHour另一個數組可以有更多的陣列與StartingDateTime相同。

這裏的$items陣列的摘錄:

Array 
(
    [0] => Array 
     (
      [StartingDateTime] => 2016-06-25 
      [TWHour] => 13:30:00 
      [TEHour] => 23:30:00 
      [NoOfHoursWorked] => 10 
      [NoOfHoursRest] => 14 
      [Comments] => can rest 
      [NoOfHoursRestAny24HR] => 14 
      [NoOfHoursRestAny7Day] => 98 
     ) 

    [1] => Array 
     (
      [StartingDateTime] => 2016-06-26 
      [TWHour] => 19:30:00 
      [TEHour] => 23:30:00 
      [NoOfHoursWorked] => 10 
      [NoOfHoursRest] => 14 
      [Comments] => any time 
      [NoOfHoursRestAny24HR] => 14 
      [NoOfHoursRestAny7Day] => 98 
     ) 

    [2] => Array 
     (
      [StartingDateTime] => 2016-06-27 
      [TWHour] => 13:30:00 
      [TEHour] => 23:30:00 
      [NoOfHoursWorked] => 10 
      [NoOfHoursRest] => 14 
      [Comments] => I 
      [NoOfHoursRestAny24HR] => 14 
      [NoOfHoursRestAny7Day] => 98 
     ) 

    [3] => Array 
     (
      [StartingDateTime] => 2016-06-28 
      [TWHour] => 03:00:00 
      [TEHour] => 05:00:00 
      [NoOfHoursWorked] => 10 
      [NoOfHoursRest] => 14 
      [Comments] => want 
      [NoOfHoursRestAny24HR] => 14 
      [NoOfHoursRestAny7Day] => 98 
     ) 

    [4] => Array 
     (
      [StartingDateTime] => 2016-06-28 
      [TWHour] => 13:30:00 
      [TEHour] => 23:30:00 
      [NoOfHoursWorked] => 10 
      [NoOfHoursRest] => 14 
      [Comments] => want 
      [NoOfHoursRestAny24HR] => 14 
      [NoOfHoursRestAny7Day] => 98 
     ) 
    [5] => Array 
     (
      [StartingDateTime] => 2016-06-29 
      [TWHour] => 13:30:00 
      [TEHour] => 23:30:00 
      [NoOfHoursWorked] => 10 
      [NoOfHoursRest] => 14 
      [Comments] => to rest 
      [NoOfHoursRestAny24HR] => 14 
      [NoOfHoursRestAny7Day] => 98 
     ) 

    [6] => Array 
     (
      [StartingDateTime] => 2016-06-30 
      [TWHour] => 12:30:00 
      [TEHour] => 23:30:00 
      [NoOfHoursWorked] => 10 
      [NoOfHoursRest] => 14 
      [Comments] => hehe 
      [NoOfHoursRestAny24HR] => 14 
      [NoOfHoursRestAny7Day] => 98 
     ) 
) 

結果數組

Array 
     (
     [0] => Array 
      (
       [StartingDateTime] => 2016-06-25 
       [TWHour] => 13:30:00 
       [TEHour] => 23:30:00 
       [NoOfHoursWorked] => 10 
       [NoOfHoursRest] => 14 
       [Comments] => can rest 
       [NoOfHoursRestAny24HR] => 14 
       [NoOfHoursRestAny7Day] => 98 
      ) 

     [1] => Array 
      (
       [StartingDateTime] => 2016-06-26 
       [TWHour] => 19:30:00 
       [TEHour] => 23:30:00 
       [NoOfHoursWorked] => 10 
       [NoOfHoursRest] => 14 
       [Comments] => any time 
       [NoOfHoursRestAny24HR] => 14 
       [NoOfHoursRestAny7Day] => 98 
      ) 

     [2] => Array 
      (
       [StartingDateTime] => 2016-06-27 
       [TWHour] => 13:30:00 
       [TEHour] => 23:30:00 
       [NoOfHoursWorked] => 10 
       [NoOfHoursRest] => 14 
       [Comments] => I 
       [NoOfHoursRestAny24HR] => 14 
       [NoOfHoursRestAny7Day] => 98 
      ) 

     [3] => Array 
      (
       [StartingDateTime] => 2016-06-28 
       [TWHour] => Array 
        (
         [0] => 03:00:00 
         [1] => 13:30:00 
        ) 
       [TEHour] => Array 
        (
         [0] => 05:00:00 
         [1] => 23:30:00 
        ) 
       [NoOfHoursWorked] => 10 
       [NoOfHoursRest] => 14 
       [Comments] => want 
       [NoOfHoursRestAny24HR] => 14 
       [NoOfHoursRestAny7Day] => 98 
      ) 
     [4] => Array 
      (
       [StartingDateTime] => 2016-06-29 
       [TWHour] => 13:30:00 
       [TEHour] => 23:30:00 
       [NoOfHoursWorked] => 10 
       [NoOfHoursRest] => 14 
       [Comments] => to rest 
       [NoOfHoursRestAny24HR] => 14 
       [NoOfHoursRestAny7Day] => 98 
      ) 

     [5] => Array 
      (
       [StartingDateTime] => 2016-06-30 
       [TWHour] => 12:30:00 
       [TEHour] => 23:30:00 
       [NoOfHoursWorked] => 10 
       [NoOfHoursRest] => 14 
       [Comments] => hehe 
       [NoOfHoursRestAny24HR] => 14 
       [NoOfHoursRestAny7Day] => 98 
      ) 

    ) 

回答

0

我認爲這將幫助你。

試試這個:

$arr = array(
    array(
      'StartingDateTime' => "2016-06-28", 
      'TWHour' => "03:00:00", 
      'TEHour' => "05:00:00", 
      'NoOfHoursWorked' => 10, 
      'NoOfHoursRest' => 14, 
      'Comments' => "want", 
      'NoOfHoursRestAny24HR' => 14, 
      'NoOfHoursRestAny7Day' => 98 
     ), 
    Array 
     (
      'StartingDateTime' => "2016-06-28", 
      'TWHour' => "13:30:00", 
      'TEHour' => "23:30:00", 
      'NoOfHoursWorked' => 10, 
      'NoOfHoursRest' => 14, 
      'Comments' => "want", 
      'NoOfHoursRestAny24HR' => 14, 
      'NoOfHoursRestAny7Day' => 98 
     ) 
    ); 

$results = array(); 
array_map(function($a, $b) use (&$results) {  
    $tmp = array($a['TWHour'], $b['TWHour']); 
    $a['TWHour'] = $b['TWHour'] = $tmp; 

    $tmp = array($a['TEHour'], $b['TEHour']); 
    $a['TEHour'] = $b['TEHour'] = $tmp; 

    $results += array_merge($a,$b); 
}, array($arr[0]),array($arr[1])); 

$結果是最終的結果。

+0

感謝您的回覆。你提供的答案在TWHour和TEHour創建了一個數組。但是,如果它具有相同的StartingDateTime,則它不符合僅合併的條件 –