Php 如何从多维关联数组中删除重复的数组值?

Php 如何从多维关联数组中删除重复的数组值?,php,arrays,multidimensional-array,array-unique,Php,Arrays,Multidimensional Array,Array Unique,包含以下内容我正在尝试从多维关联数组获取数组_唯一值 这里,我只展示了与此类似的示例数组 $array = ['games'=>[['vollyball', 'football'], ['vollyball', 'football'], ['rubby', 'chess']]]; 这是一个很好的例子 foreach ($array as $key => &$value) { $value = array_unique($value); } echo "<p

包含以下内容我正在尝试从多维关联数组获取数组_唯一值

这里,我只展示了与此类似的示例数组

$array =  ['games'=>[['vollyball', 'football'], ['vollyball', 'football'], ['rubby', 'chess']]];
这是一个很好的例子

foreach ($array as $key => &$value) {
    $value = array_unique($value);
}

echo "<pre>";
print_r($array);
echo "</pre>";
exit;
在这里,即使从多维数组中删除了副本,数组也应该是相同的


感谢您的时间和建议。

您可以尝试以下方法:

array_walk($array['games'],function($itm){global $res; $res[json_encode($itm)]=$itm;});

echo json_encode(array_values($res));
这假设您的所有可用值都低于
$array['games']

编辑:

下面是另一种方法,使用
array\u walk

[["vollyball","football"],["rubby","chess"]]
我不太喜欢全局
$res
数组,但我相信这是一条前进的道路。在
array\u walk()
的回调函数中,我将所有值添加到关联数组(
$res
)。键是其实际值的JSON表示。这样,我将覆盖关联数组
$res
中的相同值,并在最后应用
array\u values()
函数将其转换回非关联数组时,得到一组唯一值

结果是:

function unique(&$ag){
 array_walk($ag,function($itm,$key) use (&$ag,&$res) {
     if (isset($res[json_encode($itm)]))  array_splice($ag,$key,1);
     else                                 $res[json_encode($itm)]=1.;
 });
}

unique($array['games']);

echo json_encode($array)
以下是一个小演示,您可以查看:

2。编辑

使用包装器函数,我现在可以不使用全局变量
$res
,就地执行操作,即。E直接从源阵列中删除重复元素:

{"games":[["vollyball","football"],["rubby","chess"]]}
这将导致


请参见此处:

您是要过滤掉要保留唯一数组的重复项,还是…?您的预期输出?@Script47,我正在尝试过滤掉要保留的重复项left@VijayaKrishna对不起,这让我更困惑了,你可以过滤掉重复的内容,也可以保留它们,但不能“过滤掉要保留的重复内容”。@Script47,我更新了我的问题,请在chehi@cars10m上检查,谢谢你的回答,但我不会合并数组值,数组在删除重复项后应该是相同的是,我阅读了对你问题的评论。。。(在我发布此消息之后);-)好的,谢谢,@cars10m,可以从多维数组中删除重复项吗
function unique(&$ag){
 array_walk($ag,function($itm,$key) use (&$ag,&$res) {
     if (isset($res[json_encode($itm)]))  array_splice($ag,$key,1);
     else                                 $res[json_encode($itm)]=1.;
 });
}

unique($array['games']);

echo json_encode($array)
{"games":[["vollyball","football"],["rubby","chess"]]}