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
)