2013-02-22 40 views
-1

請看下面的數組,我想隱藏6和7在數組while循環,因爲那些在第一個數組中,基本上它的時間。第一個數組包含約會,第二個數組包含時間。如果用戶已經在某個地方已經修好了,我想省略時間(第二個數組)。所以基本上用的strtotime時間比較integer..Need您的幫助....比較兩個數組並刪除 - PHP ARRAY

Array 
(
    [3] => Array 
     (
      [id] => 100 
      [start] => 1364558400 
      [end] => 1364565600 
      [starttime] => 2013-03-29 17:30:00 
      [endtime] => 2013-03-29 19:30:00 
     ) 

    [4] => Array 
     (
      [id] => 100 
      [start] => 1364542200 
      [end] => 1364549400 
      [starttime] => 2013-03-29 13:00:00 
      [endtime] => 2013-03-29 15:00:00 
     ) 

) 
Array 
(
    [6] => Array 
     (
      [id] => 37 
      [start] => 1364542200 
      [end] => 1364549400 
      [starttime] => 2013-03-29 13:00:00 
      [endtime] => 2013-03-29 15:00:00 
     ) 

    [7] => Array 
     (
      [id] => 38 
      [start] => 1364549400 
      [end] => 1364556600 
      [starttime] => 2013-03-29 15:00:00 
      [endtime] => 2013-03-29 17:00:00 
     ) 

    [8] => Array 
     (
      [id] => 39 
      [start] => 1364558400 
      [end] => 1364565600 
      [starttime] => 2013-03-29 17:30:00 
      [endtime] => 2013-03-29 19:30:00 
     ) 

    [9] => Array 
     (
      [id] => 40 
      [start] => 1364565600 
      [end] => 1364571000 
      [starttime] => 2013-03-29 19:30:00 
      [endtime] => 2013-03-29 21:00:00 
     ) 

) 
+0

你的問題在某種程度上是不明確 – 2013-02-22 19:38:23

+0

用戶100在[開始時間]任命=> 2013年3月29日17:30:00 [結束時間] = > 2013-03-29 19:30:00 and [starttime] => 2013-03-29 13:00:00 [endtime] => 2013-03-29 15:00:00 ...那是什麼數組1顯示...我得到第二個數組來顯示預定義的時間,並且想要比較第一個數組並且省略了6,7,因爲當時用戶已經指定了... – user1854007 2013-02-22 19:42:14

回答

1

據我瞭解您的問題,您應該取消設置第二數組的元素。讓我們假設你的數組是:

$appointments = array(...); 
$timings = array(...); 

你應該做

if (condition_is_met($appointments)) { 
    unset($timings[$id]); 
} 

是你需要什麼?

編輯: 我猜你正在尋找的東西是這樣的:

foreach($timings as $timing) { // check if this timing is already busy 
    $id = null; 
    foreach ($appointments as $id => $appointment) { 
    if ($appointment['start'] == $timing['start'] && 
     $appointment['end'] == $timing['end']) { 
     $found = $id; 
     break; 
    } 
    } 
    if ($id) unset($appointments[$id]); 
} 

這取決於什麼是處理時間條件 - 應開始和結束是相同的兩個元素或者只是有距離同一時期至少還有一秒。你可以改變if語句並把它放到你想要的地方。

+0

我認爲這樣做會有訣竅...但是可以小修正檢查時間而不是確切的時間? – user1854007 2013-02-22 19:49:24

+0

是的,這是可能的。只要將==改爲<= and > =就可以了。 – ducin 2013-02-22 19:53:30

+0

完美的哥們......但我還在<= and > =部分工作......希望儘快結束..學習日......感謝親愛的朋友...... – user1854007 2013-02-22 20:11:07

0

據我所知,你試圖刪除第二個數組中的元素,如果他們出現在第一個數組中。請參閱:

foreach($array2 as $i) 
{ 
    if (in_array($i, $array1)) 
    { 
    unset($i); 
    } 
} 

Ref。 http://php.net/manual/en/function.in-array.php

或者,你可以創建類似的功能:

function checkItemExists($arr1, $arr2) 
{ 
    $index1 = 0; 
    $index2 = 0; 
    foreach ($arr1 as $i) 
    { 
    foreach ($i as $j) 
    { 
     if ($j == $arr2[$index1][$index2]) 
     { 
     unset($arr2[$index1][$index2]); 
     } 
    index2++; 
    } 
    $index1++; 
    $index2 = 0; 
    } 
} 
相關問題