首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从MultiArray中删除所有重复的键和值

从MultiArray中删除所有重复的键和值
EN

Stack Overflow用户
提问于 2018-11-26 07:11:58
回答 3查看 83关注 0票数 0

我想从两个数组中完全删除重复(,不删除重复项,获得唯一,而不是删除所有)。我尝试过使用array_mergearray_filterarray_uniqueunseting这些值。全部只删除重复项,但不删除所有重复的键和值。

输入:

代码语言:javascript
复制
// ARRAY 1
array(
[0] => Array ( 
    [user] => user1 
    [sending_time] => 1536513874 
    [read_time] => 1536567672 
    [content] => def 
    [recipient_status] => read 
)
);

// ARRAY 2
Array ( 
[0] => Array ( 
    [user] => 2224  
    [sending_time] => 1536513903 
    [read_time] => 1536513941 
    [content] => sad 
    [recipient_status] => read 
) 
[1] => Array ( 
    [user] => 3310  
    [sending_time] => 1536513903
    [read_time] => 1536513941 
    [content] => sad 
    [recipient_status] => read 
)
[2] => Array ( 
    [user] => user1 
    [sending_time] => 1536513874 
    [read_time] => 1536567672 
    [content] => def 
    [recipient_status] => read 
)

)

我试过什么?

代码语言:javascript
复制
array_merge($array2, $array1);

在使用array_merge之后,然后使用:array_unique($array, SORT_REGULAR);

预期的输出是:

与上述两个数组一样,具有值user1的密钥用户的子数组类似,我想删除这两个数组,因此输出应该是:

代码语言:javascript
复制
array (
    [0] => 
    array (
      [user] => 2023,
      [sending_time] => 1536513903,
      [read_time] => 1536513941,
      [content] => sad,
      [recipient_status] => read,
    )
    [1] => 
    array (
      [user] => 3310,
      [sending_time] => 1536513903,
      [read_time] => 1536513941,
      [content] => sad,
      [recipient_status] => read,
    )
)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-26 07:51:31

您可以使用阵列滤波器阵列搜索数组列的组合。

考虑使用以下方法:

代码语言:javascript
复制
// creating example arrays
$arr1 = array(array("user" => "user1", "content" => "def"));
$a = array("user" => 2224, "content" => "aaa");
$b = array("user" => 3310, "content" => "bbb");
$c = array("user" => "user1", "content" => "ccc");
$arr2 = array($a, $b, $c);

// filter $arr2 as element that are not exist in $arr1
$arr = array_filter($arr2, function($elem) use ($arr1) {
        return (array_search($elem["user"], array_column($arr1, 'user')) === false);
});

这将只在$arr中返回$arr2中的ither 2元素。

票数 2
EN

Stack Overflow用户

发布于 2018-11-26 07:33:16

您可以尝试遍历数组,并且只向另一个数组添加非双重属性并返回这个数组。

票数 0
EN

Stack Overflow用户

发布于 2018-11-26 07:53:12

你想要的是array_merge_recursive()

代码语言:javascript
复制
$result = array_merge_recursive($arr2, $arr1);

资源

  • 递归- PHP手册
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53476229

复制
相关文章

相似问题

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