2013-04-08 108 views
1

我有一個數組可以生成最近7天的時間戳,並且我有一個2天數組,可以在過去7天內給出特定日期的值。我想使用第一個數組填寫每個鍵下不存在值的日子。將1d數組合併到2d數組,其中有一個匹配

$ hotel_data:

Array 
(
    [49] => Array 
     (
      [1365202800] => 2 
     ) 

    [48] => Array 
     (
     ) 

    [50] => Array 
     (
      [1364943600] => 4 
      [1365375600] => 5 
     ) 
    ) 

$ d:

Array 
(
    [1365375600] => 0 
    [1365289200] => 0 
    [1365202800] => 0 
    [1365116400] => 0 
    [1365030000] => 0 
    [1364943600] => 0 
    [1364857200] => 0 
    [1364770800] => 0 
    [1364688000] => 0 
    [1364601600] => 0 
) 

這是我想要使用的兩個數組合並的代碼:

foreach($hotel_data as $key1=>$value1) { 
    foreach($hotel_data[$key1] as $datekey=>$ratingval) { 
     foreach($d as $key2=>$value2) 
     { 
      if($datekey !== $key2) { 
       $hotel_data[$key1][$key2] = 0; 
      } 
     } 
      //echo $datekey.'<br/>'; 
    } 
} 

這是結果:

Array 
(
    [49] => Array 
     (
      [1365202800] => 2 
      [1365375600] => 0 
      [1365289200] => 0 
      [1365116400] => 0 
      [1365030000] => 0 
      [1364943600] => 0 
      [1364857200] => 0 
      [1364770800] => 0 
      [1364688000] => 0 
      [1364601600] => 0 
     ) 

    [48] => Array 
     (
     ) 

    [50] => Array 
     (
      [1364943600] => 0 
      [1365375600] => 0 
      [1365289200] => 0 
      [1365202800] => 0 
      [1365116400] => 0 
      [1365030000] => 0 
      [1364857200] => 0 
      [1364770800] => 0 
      [1364688000] => 0 
      [1364601600] => 0 
     ) 

) 

但是,你可以看到,出於某種原因的[49]仍然但分別在兩個值的值[50]已被替換爲0。

+0

如果它是您正在使用的語言,請將其標記爲「php」。 – shinkou 2013-04-08 16:44:19

+0

我認爲這個問題是因爲相同的日期出現在所有數組中? – juselliott 2013-04-08 18:02:29

回答

1

其原因是,你必須被設置2個值爲50. 當$ datekey是第一個值的關鍵字時,您將所有其他值設置爲0,包括第二個值。 當$ datekey是第二個值的關鍵字時,您將所有其他值設置爲0,包括第一個值。

我想,如果你設置之前,檢查$ hotel_data [$鍵1] [$鍵2]它應該工作:

if (!isset($hotel_data[$key1][$key2]) { $hotel_data[$key1][$key2]=0;}

使用,你實際上可以你如果刪除。

+0

奇妙的是,它的工作!我沒有檢查是否空。謝謝。 – juselliott 2013-04-09 07:45:33

相關問題