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

时间:2018-09-24 16:08:45

标签: php arrays multidimensional-array array-unique

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

在这里,我仅显示与此类似的示例数组。

$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 =  ['games'=>[['vollyball', 'football'], ['rubby', 'chess']]];

即使从多维数组中删除重复项,这里的数组也应该相同。

感谢您的时间和建议。

1 个答案:

答案 0 :(得分:1)

您可以尝试以下操作:

SELECT ProductID, SUM(Quantity) AS Quantity
FROM Production.ProductInventory
WHERE ProductID NOT IN (1001)
GROUP BY ProductID;

这假设您的所有可用值都低于SELECT ProductID, SUM(Quantity) AS Quantity FROM Production.ProductInventory WHERE Quantity >= 1800 GROUP BY ProductID;

编辑:

这是使用$a=array_values(array_unique(array_merge(...$array['games']))); 的另一种方式:

$array['games']

我不太喜欢全局array_walk数组,但是我认为这是前进的道路。在array_walk($array['games'],function($itm){global $res; $res[json_encode($itm)]=$itm;}); echo json_encode(array_values($res)); 的回调函数中,我将所有值添加到关联数组($res)中。键是其实际值的JSON表示形式。这样,我将覆盖关联数组array_walk()中的相同值,并在最后应用$res函数将其转换回非关联数组时得到一组唯一值。

结果是:

$res

这里有一个小演示,您可以查看:http://rextester.com/JEKE60636

2。编辑

使用包装函数,我现在可以不用全局变量array_values()并就地执行操作,即。 e。直接从源数组中删除重复的元素:

[["vollyball","football"],["rubby","chess"]]

这将导致

$res

请参阅此处:http://rextester.com/YZLEK39965