Php n个数组(或对象)中唯一元素的算法

Php n个数组(或对象)中唯一元素的算法,php,algorithm,Php,Algorithm,我正在使用的编程语言:PHP 我有30个来自数据库的结果,可以是数组或对象 我想要的是一个算法,以找到共同的价值观 例: 在上面的示例中,实际上_object_id列I有几个公共元素,如21(3)、54(2) 我想得到这些公共元素 对不起,如果这个问题已经在某个地方被问到并解决了,我只是在谷歌上试了试。但是找不到快速解决方案,是的,我不需要太多的循环 提前感谢。:) 最简单的方法是将数组用作哈希表: 基本上,您可以创建以下格式的数组: array[k] = v 其中k是受影响的_对象_id,v

我正在使用的编程语言:PHP

我有30个来自数据库的结果,可以是数组或对象

我想要的是一个算法,以找到共同的价值观

例:

在上面的示例中,实际上_object_id列I有几个公共元素,如21(3)、54(2)

我想得到这些公共元素

对不起,如果这个问题已经在某个地方被问到并解决了,我只是在谷歌上试了试。但是找不到快速解决方案,是的,我不需要太多的循环


提前感谢。:)

最简单的方法是将数组用作哈希表:

基本上,您可以创建以下格式的数组:

array[k] = v
其中k是受影响的_对象_id,v是具有有效_对象_id=k的条目数组

比如:

比如:

然后,为了找到重复的值,您可以循环并检查count()>1

根据您的具体需求,您可能希望以不同的方式构建此方法,但希望这能传达基本思想


值得注意的是,要找到重复项,这是O(n)。实际上需要最简单的方法是将数组用作哈希表:

基本上,您可以创建以下格式的数组:

array[k] = v
其中k是受影响的_对象_id,v是具有有效_对象_id=k的条目数组

比如:

比如:

然后,为了找到重复的值,您可以循环并检查count()>1

根据您的具体需求,您可能希望以不同的方式构建此方法,但希望这能传达基本思想


值得注意的是,要找到重复项,这是O(n)。实际上,我已经尝试过运行循环并存储重复的值。但事实证明,这是一种非常缓慢的方法。基本上是将每个阵列与其他阵列进行比较。。哈哈,我知道这等于30*30=900。我相信一定有更快的办法。就像我们有array_diff,它给出了n个数组中的不同对象。为什么它是多维级别3,我的意思是:$data[0]=array(21,'some_data')?HamZa DzCyberDeV-是的,它可以。但在那之后怎么做呢?我试着运行循环并存储重复的值。但事实证明,这是一种非常缓慢的方法。基本上是将每个阵列与其他阵列进行比较。。哈哈,我知道这等于30*30=900。我相信一定有更快的办法。就像我们有array_diff,它给出了n个数组中的不同对象。为什么它是多维级别3,我的意思是:$data[0]=array(21,'some_data')?HamZa DzCyberDeV-是的,它可以。但是之后呢?真棒代码,谢谢,我学会了一种新技术/算法)谢谢:)不能选择两个答案。真棒代码,谢谢,我学会了一种新技术/算法)谢谢:)不能选择两个答案。谢谢科尔宾,是的,这是方法。谢谢科尔宾,是的,这是方法。
array[k] = v
$vals = array(
    21 => array('data1', 'data2'),
);
$indexedData = array();
foreach ($data as $d) {
    $indexedData[$d['effected_object_id']][] = $d['data'];
}