2015-12-16 116 views
-2

我正在PHP中使用一維數組。我想檢測重複值的存在,然後統計重複值的數量並輸出結果。例如,假設下面的數組:如果發現任何值重複組合數組php

原始數組:

Array 
    { 
     "OrderId": "1", 
     "ProductOrderedId": "1", 
     "CallerId": "1", 
    }, 
    { 
     "OrderId": "2", 
     "ProductOrderedId": "2", 
     "CallerId": "2", 
    }, 
    { 
     "OrderId": "2", 
     "ProductOrderedId": "3", 
     "CallerId": "2", 
    } 
} 

預期結果:

Array 
    { 
      "OrderId": "1", 
      "ProductOrderedId": "1", 
      "CallerId": "1", 
     }, 
     { 
      "OrderId": "2", 
      "ProductOrderedId": "2,3", 
      "CallerId": "2", 
     } 
    } 
+4

那麼你有什麼試圖解決這個問題?或者你期望有人從頭開始爲你編碼? – JakeGould

回答

3

試試這個代碼,希望這有助於你。

$newArrayData = array(); 
     $valuesProduct = array(); 
     foreach ($fetchData as $key => $value) { 

      if (count($value) > 1) { 
       foreach ($value as $keys => $vals) { 
        $valuesProduct[] = $vals['ProductOrderedId']; 
       } 
       $implodeVal=implode(',',$valuesProduct); 
       $newArrayData[]= array('OrderId' => $value[0]['OrderId'], 'CallerId' => $value[0]['CallerId'], 
"ProductOrderedId" => $implodeVal); 

      } else { 
       $newArrayData[]=array('OrderId' => $value[0]['OrderId'], 'CallerId' => $value[0]['CallerId'], 
"ProductOrderedId" => $value[0]['ProductOrderedId']); 
      } 
     } 
     print_r($newArrayData); 
+0

謝謝SunUser。有用。 :) –

0

如果你覺得簡單,你也可以使用它。

$values = array(
    array(
     "OrderId"=> "1", 
     "ProductOrderedId"=> "1", 
     "CallerId"=> "1", 
    ), 
    array(
     "OrderId"=> "4", 
     "ProductOrderedId"=> "2", 
     "CallerId"=> "2", 
    ), 
    array(
     "OrderId"=> "4", 
     "ProductOrderedId"=> "3", 
     "CallerId"=> "2", 
    ) 
); 

$temp=array(); 
foreach ($values as $value) { 
    if(isset($temp[$value["OrderId"]])){ 
     $temp[$value["OrderId"]]["ProductOrderedId"]=$temp[$value["OrderId"]]["ProductOrderedId"].",".$value["ProductOrderedId"]; 
    }else{ 
     $temp[$value["OrderId"]]=$value;   
    } 
} 

$final_array= array_values($temp);