2015-04-30 110 views
1

我知道這個問題之前已經被問過,但似乎沒有解決我的問題。PHP/MySQL - 在輸出數組中合併重複值

我有一個用戶可以有多行的DB。每個標識符只有UID/UUID。沒有其他的。其他值可能完全不同。

我做查詢選擇表中的所有行。這將返回一個多維數組:

Array 
(
    [0] => Array 
     (
      [meta] => 213097312903 
      [UUID] => 1 
      [data_name] => wheel_id 
      [data_value] => 13940 
     ) 

    [1] => Array 
     (
      [meta] => 2217037902293 
      [UUID] => 1 
      [data_name] => car_id 
      [data_value] => 09278149 
     ) 

    [2] => Array 
     (
      [meta] => 201207386198 
      [UUID] => 12 
      [data_name] => car_id 
      [data_value] => 639781238 
     ) 
) 

我想做到的是處理給多維數組和合併爲同一UUID這樣的價值觀:

Array 
(
    [0] => Array 
     (
      [meta] => 213097312903,2217037902293 
      [UUID] => 1 
      [data_name] => wheel_id,car_id 
      [data_value] => 13940,09278149 
     ) 

    [1] => Array 
     (
      [meta] => 201207386198 
      [UUID] => 12 
      [data_name] => car_id 
      [data_value] => 639781238 
     ) 
) 

它並不完全像這,我只是不希望同一用戶的數據全部在數組中。
爲了進一步處理,我需要所有用戶,所以我不能簡單地查詢選擇所有ID在哪裏...
我堅持這一點。 :(

回答

1

您可以循環,數組並創建一個新:

foreach($data as $value) 
{ 
    $output[$value['UUID']]['meta'][] = $value['meta']; 
    $output[$value['UUID']]['data_name'][] = $value['data_name']; 
    $output[$value['UUID']]['data_value'][] = $value['data_value']; 
} 

,如果你想在陣列轉換爲逗號分隔值:

​​

$outputWithCSV是:

Array 
(
    [1] => Array 
     (
      [meta] => 213097312903,2217037902293 
      [data_name] => wheel_id,car_id 
      [data_value] => 13940,09278149 
     ) 

    [12] => Array 
     (
      [meta] => 201207386198 
      [data_name] => car_id 
      [data_value] => 639781238 
     ) 
) 
+0

謝謝,工作就像魅力。從你的回答中,我得到了另一個想法,如何實現更適合我的相同。 :) – xZero

1

創建一個新的容器,該容器基於您的ID,如果它已經設置,正好連接的下一場比賽:

$data = array(); 
foreach($array as $values) { 
    if(!isset($data[$values['UUID']])) { 
     $data[$values['UUID']] = $values; 
    } else { 
     $data[$values['UUID']]['meta'] .= ', ' . $values['meta']; 
     $data[$values['UUID']]['data_name'] .= ', ' . $values['data_name']; 
     $data[$values['UUID']]['data_value'] .= ', ' . $values['data_value']; 
    } 
} 

Sample Output

+0

謝謝你,也像魅力一樣,但Volkan Ulukut是第一個,所以我接受了他的答案。 – xZero

+1

@xZero肯定沒有問題 – Ghost