如何使用 PHP 拒绝重复数据并对 JSON 类型对象值进行排序


How to reject duplicate data and sort a JSON type object value using PHP

我需要一個幫助。我需要拒绝重复数据并使用 PHP 对 json 对象中存在的值进行排序。我在下面解释我的代码。

$res[]=array('member_name'=>$member,'no_of_members'=>$rowno['cnt'],'member_type'=>$countmemb);

$res的输出如下。

[
  {member_name:"Medilink member",member_type:"1",no_of_members:"383"},
  {member_name:"Medilink member",member_type:"1",no_of_members:"383"},
  {member_name:"Medilink member",member_type:"1",no_of_members:"383"},
  {member_name:"Non-Medilink Member",member_type:"2",no_of_members:"24"},
  {member_name:"Non-Medilink Member",member_type:"2",no_of_members:"24"}
]

我需要拒绝上面的重复行,结果值格式应如下所示。

$res=[
    {member_name:"Medilink member",member_type:"1",no_of_members:"383"},
    {member_name:"Non-Medilink Member",member_type:"2",no_of_members:"24"}
]

我需要上面给出的结果。请帮助我解决此问题。

您需要

首先从多维数组中删除重复记录,然后才能使用 json_encode 获取 json 格式的结果

<?
// your array
$res[]=array('member_name'=>'Medilink member','no_of_members'=>1,'member_type'=>383);
$res[]=array('member_name'=>'Medilink member','no_of_members'=>1,'member_type'=>383);
$res[]=array('member_name'=>'Medilink member','no_of_members'=>1,'member_type'=>383);
$res[]=array('member_name'=>'Non-Medilink member','no_of_members'=>2,'member_type'=>24);
$res[]=array('member_name'=>'Non-Medilink member','no_of_members'=>2,'member_type'=>24);
// remove duplicates by using array_map and array_unique for multidimensional array
$duplicateRemoved = array_map("unserialize", array_unique(array_map("serialize", $res)));
// rearrange the array
$rearrangeArray = array_values($duplicateRemoved);
// encode the unique array into json format    
$encodedData = json_encode($rearrangeArray);
// print result    
echo $encodedData;    
?>

查看array_unique。此内置函数会抛出所有重复的条目。

我将每行转换为字符串,例如:https://3v4l.org/LjBZS

// your array
$res[]=array('member_name'=>'Medilink member','no_of_members'=>1,'member_type'=>383);
$res[]=array('member_name'=>'Medilink member','no_of_members'=>1,'member_type'=>383);
$res[]=array('member_name'=>'Medilink member','no_of_members'=>1,'member_type'=>383);
$res[]=array('member_name'=>'Non-Medilink member','no_of_members'=>2,'member_type'=>24);
$res[]=array('member_name'=>'Non-Medilink member','no_of_members'=>2,'member_type'=>24);
$res = to_array_unique($res);
var_dump($res);exit;
function to_array_unique( $array ){
	$tmp_array = array();
	foreach( $array as $k => $v ){
		$tmp_array[] = json_encode($v);
	}
	$tmp_array = array_unique($tmp_array);
	$new_array = array();
	foreach ($tmp_array as $k2 => $v2) {
		$new_array[] = json_decode($v2);
	}
	return json_encode( $new_array );
}