2015-04-01 39 views
0

我有一個主機名數組及其相應的位置。查找攔截兩個數組,然後合併兩個

Array ([ABC01] => Array ([hostid] => 12345 
          [lat] => 123 
          [lon] => 123 
          [adr] => 126 Foo Street 
          [city] => Rocky Hill 
          [state] => Connecticut 
          [country] => USA) 
     [ABC02] => Array ([hostid] => 12346 
          [lat] => 345 
          [lon] => 345 
          [adr] => 123 Foo Street 
          [city] => Boston 
          [state] => Massachusetts 
          [country] => USA) 

     [ABC03] => Array ([hostid] => 12346 
          [lat] => 345 
          [lon] => 345 
          [adr] => 123 Foo Street 
          [city] => New York City 
          [state] => New York 
          [country] => USA) 
      .....) 

我比較它更陣 - 同一個主機名,但它鏈接到IP地址:

Array ([ABC01] => Array ([ip] => 192.168.2.1) 
     [ABC02] => Array ([ip] => 192.168.2.2) 
     [ABC03] => Array ([ip] => 192.168.2.3) 
     ) 

我想創建下面的數組:

  [ABC02] => Array ([hostid] => 12346 
          [lat] => 345 
          [lon] => 345 
          [adr] => 123 Foo Street 
          [city] => Boston 
          [state] => Massachusetts 
          [country] => USA 
          [ip] => 192.168.2.1) 

我試圖找到數組的交集,然後合併兩個(找到相同的鍵,然後合併)。我嘗試了各種功能,但最終的結果從來都不是我想要的。

我設法找到一個函數here合併常見的鑰匙,但它包含在另一個數組中的位置字段數組中的一個數組返回的IP,如下所示:

Array ([ABC02] => Array ([0] => Array ([hostid] => 12346 
          [lat] => 345 
          [lon] => 345 
          [adr] => 123 Foo Street 
          [city] => Boston 
          [state] => Massachusetts 
          [country] => USA 
          [1] => Array ([ip] => 192.168.2.1))) 

是否有更簡單的方法做到這一點?

回答

4

很容易有一個內置的PHP函數:

$result = array_merge_recursive($large, $small); 

基於您的評論只得到那些共同的價值觀,然後合併。這是假設在$small所有按鍵都在$large

$result = array_merge_recursive(array_intersect_key($large, $small), $small); 

不使假設,如果有可能在任何一個不在其他然後鍵:

$result = array_merge_recursive(array_intersect_key($large, $small), 
           array_intersect_key($small, $large)); 
+0

對不起,我沒有指定:我不想全部合併兩者 - 我希望截取兩者,然後將較大陣列的相應值合併到較小的陣列中。用array_merge_recursive,我可以得到完整的列表。我知道我可以再用一個array_intercept_key和更小的數組來給我我想要的東西 - 它似乎是重複的。 – l33tspeak 2015-04-01 20:31:29

+0

已編輯。如果我現在明白了,那麼它仍然非常簡單。 – AbraCadaver 2015-04-01 20:34:27

+0

謝謝 - 這是訣竅!我開始做一個前端項目,所以我現在只能回到這個看起來很乏味的任務。 – l33tspeak 2015-04-07 14:06:17