PHP数组使数组变得唯一

PHP数组使数组变得唯一,php,arrays,Php,Arrays,我有一个数组,如下所示: $a = array( 1 => array("sport", "geo"), 2 => array("sport", "geo", "history"), 3 => array("geo", "history"), 4 => array("golf", "sport"), ... ); 从这一点上,我需要得到键,以这样的方式使值是唯一的。 因此,我需要得到如下信息: $b = array( 1, 3, 4 ); $a[2

我有一个数组,如下所示:

$a = array(
  1 => array("sport", "geo"),
  2 => array("sport", "geo", "history"),
  3 => array("geo", "history"),
  4 => array("golf", "sport"),
  ...
);
从这一点上,我需要得到键,以这样的方式使值是唯一的。 因此,我需要得到如下信息:

$b = array( 1, 3, 4 );
$a[2]
将被删除,因为它与
$a[1]
具有相同的值,但由于
$a[2]
不存在,
$a[3]
就可以了

如果某些值被完全删除,这很好。我将有30多个键,从中我需要得到10个,它们有唯一的值

键是问题ID,值是标记

我想问10个不同的问题(这样我就不会问10个关于体育的问题)

我尝试了
array\u unique()
,但只返回以下内容:

Array ( 
  [1] => Array ( 
    [0] => sport 
    [1] => geo 
  )
) 
这似乎帮不了什么忙

你们能给我指些能帮我的东西吗

我想我可以尝试列出所有可能的类别,使数组唯一,按随机顺序排序。我需要保留密钥,但密钥是唯一的…

可以用来检测唯一的标记

返回一个数组,该数组包含array1中任何其他数组中都不存在的所有项

然后使用将唯一值存储到
$tags
变量中

将一个或多个数组的元素合并在一起,以便将其中一个数组的值追加到前一个数组的末尾。它返回结果数组

您可以使用来检测唯一的标记

返回一个数组,该数组包含array1中任何其他数组中都不存在的所有项

然后使用将唯一值存储到
$tags
变量中

将一个或多个数组的元素合并在一起,以便将其中一个数组的值追加到前一个数组的末尾。它返回结果数组


只需迭代初始问题数组,每次都将值(标记数组)保存到另一个临时数组中,并检查临时数组中是否已经存在实际标记-如果不存在,则将问题添加到临时数组中,如果存在,则执行下一步。直到临时数组中有10个问题,如果您完成问题数组时还没有10个问题-重复迭代,但这次添加其他问题,即使标记重复-直到您有10个问题。

只需迭代初始问题数组,每次保存值(标记数组)到另一个临时数组,检查临时数组中是否已存在实际标记-如果不存在,则将问题添加到临时数组,如果存在,则转到下一步。直到你的临时数组中有10个问题,如果你完成了问题数组而没有10个问题-重复迭代,但这次添加其他问题,即使标记重复-直到你有10个问题。

给定数组中的每个键都是唯一的,所以你需要想一想我需要从中获得什么
,在这种情况下,值是唯一的
实际上意味着你,特别是你没有在子数组中设置任何显式键,这意味着默认的数字键是完全不相关的,也就是说,
$a[1]
的值与
$e[1]
的值没有必要相同,这使得任何消除都毫无意义。你不应该删掉
数组[1]
数组[3]
数组[4]
所有这些值集都出现在
数组[2]
中吗?您需要明确哪些值被保留,哪些值被删除的优先级顺序?删除2是因为它包含运动和地理信息。为什么不删除3,因为它包含geo?第四,因为它包含运动?顺便说一句,在你问问题的时候,不要再使用“我甚至不知道该问什么”之类的词语,无论是在互联网上还是在现场。问问吧。现在最好编辑你的问题,因为毕竟这是很容易理解的:)在给定的数组中,每个键都是唯一的,所以你需要考虑我需要从中获取键的
,以这样的方式,值是唯一的,特别是你不在子数组中设置任何显式键,这意味着默认的数字键是完全不相关的,也就是说,
$a[1]
的值不必与,
$e[1]
的值相同,这使得任何消除都变得毫无意义。您不应该将
数组[1]
数组[3]
数组[4]
剪切掉,因为所有这些值集都出现在
数组[2]中吗
?您需要明确哪些值被保留,哪些值被删除的优先级顺序?删除2是因为它包含运动和地理信息。为什么不删除3,因为它包含geo?第四,因为它包含运动?顺便说一句,在你问问题的时候,不要再使用“我甚至不知道该问什么”之类的词语,无论是在互联网上还是在现场。问问吧。最好现在就编辑你的问题,因为毕竟这是可以理解的:)
<?php

$a = array(
 1 => array("sport", "geo"),
 2 => array("sport", "geo", "history"),
 3 => array("geo", "history"),
 4 => array("golf", "sport")
);

 $tags = [];

foreach($a as $tag){
    $tags = array_merge($tags, array_diff( $tag, $tags));
 }

 print_r($tags);
Array
(
  [0] => sport
  [1] => geo
  [2] => history
  [3] => golf
)