Php 从多维阵列中删除重复子阵列
我知道你可能会认为这是一个骗人的问题,可能是这样,但我发现似乎没有任何东西可以对我的数组进行排序。我已经构建了我的阵列,输出如下所示:Php 从多维阵列中删除重复子阵列,php,arrays,Php,Arrays,我知道你可能会认为这是一个骗人的问题,可能是这样,但我发现似乎没有任何东西可以对我的数组进行排序。我已经构建了我的阵列,输出如下所示: Array => [ [1] => [ [1] => [ 'foo' => 'bar', 'foobar' => 'foo' ], [2] => [ 'foo' => 'bar',
Array => [
[1] => [
[1] => [
'foo' => 'bar',
'foobar' => 'foo'
],
[2] => [
'foo' => 'bar',
'foobar' => 'foo'
],
[3] => [
'foo' => 'bar',
'foobar' => 'foo'
],
[4] => [
'foo' => 'foo',
'foobar' => 'bar'
],
[5] => [
'foo' => 'foo',
'foobar' => 'bar'
],
[6] => [
'foo' => 'foo',
'foobar' => 'bar'
]
]
]
我尝试使用以下两种方法去除重复子阵列:
array_unique($data, SORT_REGULAR);
但一切都没有改变
我还尝试使用:
$data = array_map(
'unserialize',
array_unique(array_map('serialize', $data))
);
但这也没用。我还尝试过设置$data数组,并向新数组中添加一个,如下所示:
$newData = [];
foreach ($data as $key => $item)
{
$newData[$key] = array_map(
'unserialize', array_unique(array_map('serialize', $item))
);
}
但每个键只返回一个子数组。我做错了什么?您可以使用
array\u unique($data,SORT\u REGULAR)代码>内部:
您可以使用array\u unique($data,SORT\u REGULAR)代码>内部:
如果你知道它是重复的,为什么不用谷歌搜索它?这是谷歌排名第一的结果。例如@Andreas,因为正如我在我的问题中所说的,这个解决方案没有像链接的答案所期望的那样有效,因为“叶”元素是数组,而不是散列。。。因此代码需要一些最小的更改:)然后您没有进行足够的尝试!如果你用谷歌搜索它,你会找到我发布的23个答案的链接。他们都没工作吗?!真正地如果你知道它是复制品,为什么不谷歌一下呢?这是谷歌排名第一的结果。例如@Andreas,因为正如我在我的问题中所说的,这个解决方案没有像链接的答案所期望的那样有效,因为“叶”元素是数组,而不是散列。。。因此代码需要一些最小的更改:)然后您没有进行足够的尝试!如果你用谷歌搜索它,你会找到我发布的23个答案的链接。他们都没工作吗?!真正地
$result = array_map(function($x) {
return array_unique($x, SORT_REGULAR);
}, $data);
print_r($result);