2014-08-27 44 views
0

我有一個數組。
檢查時間和工會時間

Array 
(
    [0] => Array 
     (
      [starttime] => 08:00 
      [endtime] => 9.30:00 
     ) 

    [1] => Array 
     (
      [starttime] => 10:00 
      [endtime] => 11:00 
     ) 

    [2] => Array 
     (
      [starttime] => 10:00 
      [endtime] => 12:00 
     ) 

) 

我想要一些像刪除時間和返回聯合時間之類的東西。

Array 
(
    [0] => Array 
     (
      [starttime] => 08:00 
      [endtime] => 09:30 
     ) 

    [2] => Array 
     (
      [starttime] => 10:00 
      [endtime] => 12:00 
     ) 

) 

這裏08:00至9:30是單一無其他之間在他們BCZ 10:00 - 11:00較大9:30。
和10:00 - 11:00在10:00 - 12:00之間,因此刪除第二個對象只顯示第一個和第三個。
只是打電話就像得到工會時間。

邏輯 我想他們,並得到了一個邏輯。
首先找到最小的startime。之後檢查此最小的startime與endtime之間的任何其他值。

Example

我怎樣才能做到這一點。

+0

顯示我們到目前爲止你已經嘗試過的東西。 – TiMESPLiNTER 2014-08-27 12:31:48

+0

是的,告訴我們,告訴我們,告訴我們!!!!! – 2014-08-27 12:44:17

+0

@TiMESPLiNTER我只是想一些邏輯,並找到一些演示,以http://codepad.viper-7.com/C7owRM – user3615293 2014-08-27 12:45:58

回答

0

這裏是你如何能做到這

$array = array(
     array('starttime' => '08:00' , 'endtime' => '09:30') , 
     array('starttime' => '10:00' , 'endtime' => '11:00') , 
     array('starttime' => '10:00' , 'endtime' => '12:00') , 
    ); 

    $i=0; 
    foreach($array as $row){ 
     if(isset($array[$i-1])){ 
      $prev = $array[$i]; 
      if($row['starttime'] < $prev['endtime'] || $row['endtime'] > $prev['endtime']){ 
      unset($array[$i]); 
      } 
     } 
     $i++; 
    } 

    echo '<pre>'; 
    print_r($array); 

你可以粘貼和測試代碼here

輸出

Array 
    (
     [0] => Array 
      (
       [starttime] => 08:00 
       [endtime] => 09:30 
      ) 

     [2] => Array 
      (
       [starttime] => 10:00 
       [endtime] => 12:00 
      ) 

    )