首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我有这个对象,我需要从目录中删除重复的rfcs,这是怎么可能的?

我有这个对象,我需要从目录中删除重复的rfcs,这是怎么可能的?
EN

Stack Overflow用户
提问于 2022-11-11 16:59:54
回答 2查看 26关注 0票数 0

我在php中有一个对象:

代码语言:javascript
运行
复制
$object = 
[
    [
        {"catalogo": "C400047", "rfc_inf_aval": "CIS981002NK4", },
        {"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6",},
        {"catalogo": "C400047","rfc_inf_aval": "MZT8501014S6",},
        {"catalogo": "C400047","rfc_inf_aval": "CIS981002NK4",},
        {"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6",},
        {"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6",},
        {"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6",},
        {"catalogo": "C140064","rfc_inf_aval": "CIS981002NK4",},   
    ],
]

它应该是这样的,我消除所有重复的rfc每个目录,重复的目录不应该被消除。

代码语言:javascript
运行
复制
[
    [
        {"catalogo": "C400047","rfc_inf_aval": "CIS981002NK4",},
        {"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6",},
        {"catalogo": "C400047","rfc_inf_aval": "MZT8501014S6",},
        {"catalogo": "C140064","rfc_inf_aval": "CIS981002NK4",},
    ],
]

我尝试过这样做,但是它删除了所有的rfc,并且我需要它只删除重复的rfc,而是按目录删除。

代码语言:javascript
运行
复制
  for ($i=0; $i < count($object); $i++) { 
                 if(!in_array($object[$i]->rfc_inf_aval, $array1)){
                     array_push($array1,  $object[$i]->rfc_inf_aval);
                      array_push($array2,  $object[$i]);
                 }
             }   
EN

回答 2

Stack Overflow用户

发布于 2022-11-11 17:18:58

试试这个:

代码语言:javascript
运行
复制
 for ($i=0; $i < count($object); $i++) { 
     $k = $object[$i]->catalogo.'|'.$object[$i]->rfc_inf_aval;
     $reduced[$k] = $object[$i];
 }
 $object = array_values($reduced);

  • I从目录和rfc_inf_aval生成密钥。这消除了新array.
  • array_values中的重复,只需在结果数组中设置正常的数字索引.

票数 1
EN

Stack Overflow用户

发布于 2022-11-11 17:36:57

首先,您的对象是无效的,因为它是一个JSON字符串,所以我使用它来定义它。

按照这个答案https://stackoverflow.com/a/25020035/1757214,我得到以下代码:

代码语言:javascript
运行
复制
<?php 

$js = <<<JSON
[[
        {"catalogo": "C400047","rfc_inf_aval": "CIS981002NK4"},
        {"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6"},
        {"catalogo": "C400047","rfc_inf_aval": "MZT8501014S6"},
        {"catalogo": "C400047","rfc_inf_aval": "CIS981002NK4"},
        {"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6"},
        {"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6"},
        {"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6"},
        {"catalogo": "C140064","rfc_inf_aval": "CIS981002NK4"} 
]]
JSON;
// Get the real object as an associative array
$data = json_decode($js, true);
// Use the first element, since is a nested array
$object = $data[0];

function my_array_unique($array, $keep_key_assoc = false){
    $duplicate_keys = array();
    $tmp = array();       

    foreach ($array as $key => $val){
        // convert objects to arrays, in_array() does not support objects
        if (is_object($val))
            $val = (array)$val;

        if (!in_array($val, $tmp))
            $tmp[] = $val;
        else
            $duplicate_keys[] = $key;
    }

    foreach ($duplicate_keys as $key)
        unset($array[$key]);

    return $keep_key_assoc ? $array : array_values($array);
}

var_dump(my_array_unique($object));

你会得到:

代码语言:javascript
运行
复制
array(4) {
  [0]=>
  array(2) {
    ["catalogo"]=>
    string(7) "C400047"
    ["rfc_inf_aval"]=>
    string(12) "CIS981002NK4"
  }
  [1]=>
  array(2) {
    ["catalogo"]=>
    string(7) "C140064"
    ["rfc_inf_aval"]=>
    string(12) "MZT8501014S6"
  }
  [2]=>
  array(2) {
    ["catalogo"]=>
    string(7) "C400047"
    ["rfc_inf_aval"]=>
    string(12) "MZT8501014S6"
  }
  [3]=>
  array(2) {
    ["catalogo"]=>
    string(7) "C140064"
    ["rfc_inf_aval"]=>
    string(12) "CIS981002NK4"
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74405847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档