代码之家  ›  专栏  ›  技术社区  ›  CHarris

尝试从具有array_unique和array_值的json数组中删除重复项

  •  0
  • CHarris  · 技术社区  · 8 年前

    我一直在跟踪,但对我来说还是不管用: How to remove duplicate data of JSON object using PHP

    在我的 PHP 我有3个文件 JSON arrays :

    {"results":[{"cat_id":2,"cat_name":"veterinarian"},{"cat_id":3,"cat_name":"electrician"},
    {"cat_id":4,"cat_name":"dentist"}]}
    

    阵列2:

     {"results":[{"cat_id":"8","cat_name":"dental hygienist"},{"cat_id":"5","cat_name":"stocktaker"},
    {"cat_id":"9","cat_name":"builder"}]}
    

    阵列3:

    {"results":[{"cat_id":4,"cat_name":"dentist"},{"cat_id":5,"cat_name":"stocktaker"},
    {"cat_id":3,"cat_name":"electrician"}]}
    

    我想合并这些并删除重复项。我试着这样做:

    //this works good, all merged into one
    $array1AndArray2AndArray3 = array_merge_recursive($array1,$array2, $array3);
    
    //now I want to remove duplicates:
    $uniqueArray = array_values(array_unique($array1AndArray2AndArray3, SORT_REGULAR));
    
    echo "Unique array is " . json_encode($uniqueArray);
    

    但我得到:

    Unique array is [[{"cat_id":2,"cat_name":"veterinarian"},{"cat_id":3,"cat_name":"electrician"},
    {"cat_id":4,"cat_name":"dentist"},
    {"cat_id":"8","cat_name":"dental hygienist"},{"cat_id":"5","cat_name":"stocktaker"},
    {"cat_id":"9","cat_name":"builder"},
    {"cat_id":4,"cat_name":"dentist"},
    {"cat_id":5,"cat_name":"stocktaker"},
    {"cat_id":3,"cat_name":"electrician"}]]
    

    正如你所看到的,复制品不会被删除,还有额外的 [] 和 "results" 丢失。

    你能告诉我怎么修理这个吗,或者其他的方法?

    1 回复  |  直到 8 年前
        1
  •  1
  •   CHarris    8 年前

    使用以下解决方案

    $array1 = '{"results":[{"cat_id":2,"cat_name":"veterinarian"},{"cat_id":3,"cat_name":"electrician"},{"cat_id":4,"cat_name":"dentist"}]}';
    $array2 = '{"results":[{"cat_id":"8","cat_name":"dental hygienist"},{"cat_id":"5","cat_name":"stocktaker"},{"cat_id":"9","cat_name":"builder"}]}';
    $array3 = '{"results":[{"cat_id":4,"cat_name":"dentist"},{"cat_id":5,"cat_name":"stocktaker"},{"cat_id":3,"cat_name":"electrician"}]}';
    
    $array1 =  json_decode($array1, TRUE);
    $array2 =  json_decode($array2, TRUE);
    $array3 =  json_decode($array3, TRUE);
    
    $array4 = array_merge_recursive($array1['results'], $array2['results'], $array3['results']);
    
    $uniqueArray['results'] = array_values(array_unique($array4, SORT_REGULAR));
    
    推荐文章