我想从两个数组中完全删除重复(,不删除重复项,获得唯一,而不是删除所有)。我尝试过使用array_merge、array_filter、array_unique和unseting这些值。全部只删除重复项,但不删除所有重复的键和值。
输入:
// 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
))
我试过什么?
array_merge($array2, $array1);在使用array_merge之后,然后使用:array_unique($array, SORT_REGULAR);
预期的输出是:
与上述两个数组一样,具有值user1的密钥用户的子数组类似,我想删除这两个数组,因此输出应该是:
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,
)
)发布于 2018-11-26 07:51:31
您可以使用阵列滤波器、阵列搜索和数组列的组合。
考虑使用以下方法:
// 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元素。
发布于 2018-11-26 07:33:16
您可以尝试遍历数组,并且只向另一个数组添加非双重属性并返回这个数组。
发布于 2018-11-26 07:53:12
你想要的是array_merge_recursive()
$result = array_merge_recursive($arr2, $arr1);资源
https://stackoverflow.com/questions/53476229
复制相似问题