2013-02-10 127 views
1

我有一個多維PHP數組看起來像這樣在JSON:搜索在多維數組複製PHP

array = [{ 
      "id":"1", 
      "key":"Ferrari", 
      "type":"car"}, 
     { 
      "id":"1", 
      "key":"Red", 
      "type":"color"}, 
     { 
      "id":"73", 
      "key":"Yellow", 
      "type":"color" 
     }] 

因爲它實際上是一個搜索結果,我想,動態地結合其中的id是結果相同。換句話說,新的數組應該是這樣的:

array = [{ 
      "id":"1", 
      "key":"Red Ferrari", 
      "type":"keyword"}, 
     { 
      "id":"73", 
      "key":"Yellow", 
      "type":"color" 
     }] 

我一直在尋找了大量的PHP函數,但他們有一個有限的功能,在多維數組。任何建議都讚賞:)

許多方面
安德烈亞斯

+1

一個匹配總是會導致'type:keyword'?名字是如何組合的?你知道哪裏確定它是*紅色法拉利*而不是*法拉利紅色*? – insertusernamehere 2013-02-10 13:36:34

回答

0

有沒有基本的功能你提到做具體的事情。所以你可以做這樣的事情:

print_r(my_array_merge($data)); 
function my_array_merge($data) 
{ 
    // sort all records by id to merge them later 
    $data_by_id = array(); 
    foreach ($data as $item) 
    { 
     if (!isset($data_by_id[ $item['id'] ])) { 
      $data_by_id[ $item['id'] ] = array(); 
     } 
     $data_by_id[ $item['id'] ][] = $item; 
    } 
    // merge records with same id 
    $return = array(); 
    foreach ($data_by_id as $id => $items) 
    { 
     foreach ($items as $item) 
     { 
      if (!isset($return[ $id ])) { 
       $return[ $id ] = $item; 
      } else { 
       $return[ $id ]['key'] .= ' ' . $item['key']; 
       $return[ $id ]['type'] = 'keyword'; // I don't really get what you mean by 'keyword' 
      } 
     } 
    } 
    // reset keys before return 
    return array_values($return); 
} 
+0

以及'關鍵字'只是爲了象徵它不再是像'汽車'或'顏色'這樣的明確類別,但那正是我需要的thx :) – 2013-02-10 13:50:39