如何删除多维数组中的唯一元素?

问题描述 投票:0回答:3

如何删除多维数组中的重复键?

我的数组如下。

$array = [[0, 1, 2, 3, 4], [1, 2, 3, 4, 6]];

我想要的数组应该是..:

$array = [[0, 1, 2, 3, 4], [6]];
php
3个回答
1
投票

这里有一个简单而又肮脏的解决方案

递归遍历数组中的每一个元素 如果你没有看到一个元素,就把它设置为null (由于某些原因,取消设置是行不通的). 然后对得到的子数组进行过滤。

$array = [[0, 1, 2, 3, 4], [1, 2, 3, 4, 6]];
$seen = [];
array_walk_recursive($array, function (&$v) use (&$seen) {
    if (!array_key_exists($v, $seen) {
       $seen[$v] = true;
    } else {
       $v = null;
    }
});
$final = array_map('array_filter', $array);

0
投票

如果使用了函数array_diff()和array_values(),就可以在一行代码中提供解决方案。

$array = [[0, 1, 2, 3, 4], [1, 2, 3, 4, 6]];

$array[1] = array_values(array_diff($array[1],$array[0]));

var_export($array);

输出:

array (
  0 => 
  array (
    0 => 0,
    1 => 1,
    2 => 2,
    3 => 3,
    4 => 4,
  ),
  1 => 
  array (
    0 => 6,
  ),
)

0
投票

$serialize=array_map('serialize',$array);
$unique=array_unique($serialize);

$result=array_map('unserialize',$uniue);

print_r($result);

© www.soinside.com 2019 - 2024. All rights reserved.