2016-01-25 107 views
1

我需要一個幫助。我有一些JSON類型的數據,我想使用PHP刪除重複的數據集。我在下面解釋我的代碼。如何使用PHP刪除JSON對象的重複數據

data=[ 
    {'member_name':member1,'no_of_users':20}, 
    {'member_name':member1,'no_of_users':20}, 
    {'member_name':member1,'no_of_users':20}, 
    {'member_name':member2,'no_of_users':10}, 
    {'member_name':member2,'no_of_users':10}, 
    {'member_name':member3,'no_of_users':30}, 
] 

我的PHP端代碼如下。

$res[]=array('member_name'=>$member,'no_of_members'=>$rowno['cnt']); 
$result=var_dump(array_unique($res, SORT_REGULAR)); 
//$result = json_decode($array, TRUE); 
print json_encode($result); 

在這裏,我們可以看到許多重複數據available.I只需要使用PHP.Please幫我這個JSON對象中刪除重複數據。

回答

6

第一個json_decode JSON字符串,所以我們可以在PHP中使用它。然後,您應該使用array_unique與標記SORT_REGULAR刪除所有重複項,並最後將json_encode再次轉換爲JSON字符串。這裏有一個工作示例:

$data = '[ 
    {"member_name":"member1","no_of_users":20}, 
    {"member_name":"member1","no_of_users":20}, 
    {"member_name":"member1","no_of_users":20}, 
    {"member_name":"member2","no_of_users":10}, 
    {"member_name":"member2","no_of_users":10}, 
    {"member_name":"member3","no_of_users":30} 
]'; 

// Make a PHP array from the JSON string. 
$array = json_decode($data, TRUE); 

// Only keep unique values, by using array_unique with SORT_REGULAR as flag. 
// We're using array_values here, to only retrieve the values and not the keys. 
// This way json_encode will give us a nicely formatted JSON string later on. 
$array = array_values(array_unique($array, SORT_REGULAR)); 

// Make a JSON string from the array. 
$result = json_encode($array); 

編輯: 基於對你的問題你的編輯: 不要分配$resultvar_dump。用$result=array_unique($res, SORT_REGULAR);替換$result=var_dump(array_unique($res, SORT_REGULAR));

+0

OK,現在如何查看這些數據在同一format.when我打印出來把它的未來像this'陣列(3){ [0] => 陣列(2){ [ 「MEMBER_NAME」] => 串(15) 「MEDILINK 1」 [ 「no_of_members」] => 串(3) 「383」 } [7] => 陣列(2 ){ [「member_name」] => string(19)「Medilink2」 [ 「no_of_members」] => 串(2) 「24」 } [11] => 陣列(2){ [ 「MEMBER_NAME」] => 串(16) 「MEDILINK 3」 [」 no_of_members「] => string(1)」8「 } }' – subhra

+0

我已經發布了我上面更新的代碼。 – subhra

+0

確保您不要忘記最後一行'$ result = json_encode($ array);'將您的PHP數組轉換回JSON字符串! – Rein

0

在這裏,我該如何解決這個問題。以示例查看。 make json unique

代碼部分:

<?php 
    $depositeArray = array('deposite'=>array(
      array('email'=>"[email protected]", 'deposite'=>0), 
      array('email'=>"[email protected]", 'deposite'=>0), 
      array('email'=>"[email protected]", 'deposite'=>0), 
      array('email'=>"[email protected]", 'deposite'=>0), 
      array('email'=>"[email protected]", 'deposite'=>0), 
      array('email'=>"[email protected]", 'deposite'=>0) 
      ), 
      'total'=>0); 
    $depositeArray = json_encode($depositeArray); 
    $depositeArray = json_decode($depositeArray,true); 
    $depositeArrayNew = Json_Super_Unique($depositeArray['deposite'],'email'); 
    $depositeArray['deposite'] = $depositeArrayNew ; 
    echo json_encode($depositeArray); 
    function Json_Super_Unique($array,$key){ 
     $temp_array = array(); 
     foreach ($array as &$v) { 
      if (!isset($temp_array[$v[$key]])) 
      $temp_array[$v[$key]] =& $v; 
     } 
     $array = array_values($temp_array); 
     return $array; 
    } 
?>