2016-01-25 110 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; 
    } 
?>