How to remove duplicate data of JSON object using PHP

前端 未结 3 1532
[愿得一人]
[愿得一人] 2020-12-11 07:17

I need one help.I have some JSON type data and i want to remove the duplicate set of data using PHP.I am explaining my code below.

data=[
   {\'member_name\'         


        
相关标签:
3条回答
  • 2020-12-11 07:53

    Here, how can I solve this. See with example. make json unique

    code part:

    <?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;
        }
    ?>
    
    0 讨论(0)
  • 2020-12-11 08:06

    I was faced with the same challenge, so I came up with this simple solution.

    <?php
    //UniqueValues.php
    class UniqueValues{
        #The data Array
        private $dataArray;
        /*
            The index you want to get unique values.
            It can be the named index or the integer index.
            In our case it is "member_name"
        */
        private $indexToFilter;
    
        public function __construct($dataArray, $indexToFilter){
            $this->dataArray = $dataArray;
            $this->indexToFilter = $indexToFilter;
        }
        private function getUnique(){
            foreach($this->dataArray as $key =>$value){
                $id[$value[$this->indexToFilter]]=$key;
            }
            return array_keys(array_flip(array_unique($id,SORT_REGULAR)));
        }
        public function getFiltered(){
            $array = $this->getUnique();
            $i=0;
            foreach($array as $key =>$value){
                $newAr[$i]=$this->dataArray[$value];
                $i++;
            }
            return $newAr;
        }
    }
    ?>
    

    include the class in your invocation code and that's all

    <?php
    //index.php
    include_once('UniqueValues.php');
    #Your JSON data
    $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}
    ]';
    #Convert your JSON to Array
    $array = json_decode( $data, TRUE );
    
    /*
    Create an object by passing the "Two Dimension Array" in this case "$array" and 
    the "index" in this case "member_name" that you want to get the Unique Values
    */
    $supper = new UniqueValues($array,"member_name");
    
    /*
    Get the unique valued array by calling the getFiltered() function
    and encode it to JSON
    */
    $result = json_encode( $supper->getFiltered() );
    
    #Let the World See it :)
    echo $result;
    ?>
    
    0 讨论(0)
  • 2020-12-11 08:09

    First json_decode the JSON string, so we can work with it in PHP. Then you should use array_unique with the flag SORT_REGULAR to remove all duplicates and lastly json_encodeit again to a JSON string. Here's a working example:

    $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 );
    

    Edit: Based on your edit in your question: Don't assign $result to a var_dump. Replace $result=var_dump( array_unique( $res, SORT_REGULAR ) ); by $result=array_unique( $res, SORT_REGULAR );

    0 讨论(0)
提交回复
热议问题