Мне нужна одна помощь. У меня есть данные типа JSON, и я хочу удалить дублированный набор данных с помощью PHP. Я объясняю свой код ниже.
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);
Здесь мы можем увидеть много дублирующихся данных. Мне нужно удалить только дубликаты данных из этого объекта JSON с помощью PHP. Пожалуйста, помогите мне.
Сначала 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 );
Изменить: на основе вашего редактирования в вашем вопросе: не присваивайте $result
var_dump
. Заменить $result=var_dump( array_unique( $res, SORT_REGULAR ) );
по $result=array_unique( $res, SORT_REGULAR );
Здесь, как я могу это решить. См. Пример. Сделать json уникальным
часть кода:
<?php $depositeArray = array( 'deposite'=>array( array('email'=>"sajib@gmail.com", 'deposite'=>0), array('email'=>"avi@gmail.com", 'deposite'=>0), array('email'=>"iqbal@gmail.com", 'deposite'=>0), array('email'=>"balla@gmail.com", 'deposite'=>0), array('email'=>"sajib@gmail.com", 'deposite'=>0), array('email'=>"razib@gmail.com", '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; } ?>