鍍金池/ 問答/Java  PHP  Python  HTML/ 如何判斷相同元素不同順序組成的不同數(shù)組是相同的?

如何判斷相同元素不同順序組成的不同數(shù)組是相同的?

比如要根據(jù)傳遞的數(shù)組,如果里面的元素相同(順序可能不同),轉(zhuǎn)為字符串作為redis 的 key

$a=['a','b','c'];
$b=['b','a','c'];
$c=['c','b','a'];
$d=['c','b','a','d'];
function test($arr){
   // do sth
   $tmp = doSth($arr);
   $redis->set(implode(',',$tmp),time());
}
function doSth($arr){
    sort($arr);//暫時可以解決
    return $arr;
}
//$a,$b,$c都是 a b c 組成的,就可以把他們當(dāng)做一個 key 也就是 doSth($a) doSth($b) doSth($c) 返回值相同,$d返回不同
回答
編輯回答
野橘
2017年10月23日 03:46
編輯回答
我甘愿

Thank goodness I found it on this post

2017年7月6日 00:16
編輯回答
不討囍

了解一下這兩個方法,并合理利用。

PHP: array_intersect - Manual - http://php.net/manual/zh/func...
PHP: array_diff - Manual - http://php.net/manual/zh/func...
2018年7月26日 03:44
編輯回答
練命

創(chuàng)建一個集合set 遍歷每一個數(shù)組,向set集合添加,得到的就是結(jié)果

a=['a','b','c']
b=['b','a','c']
c=['c','b','a']
d=['c','b','a','d']

ret = list(set(a).intersection(set(b)))
2018年1月7日 15:45
編輯回答
硬扛

如果資源充足,則分別排序后依次比較即可。

2017年7月2日 12:10
編輯回答
未命名

樓上其實(shí)有人已經(jīng)回答到點(diǎn)子上了,用array_intersect取交集,
其實(shí)就是個相似度計(jì)算的問題 ,昨天我寫了個文章,講的是利用文章Tag推薦相似文章,就用到這了個方法,
jaccard相似度

給定兩個集合A,B,Jaccard 系數(shù)定義為A與B交集的大小與A與B并集的大小的比值,定義如下:

bVbgVBi?w=252&h=38

你這里只要相似度為1 就證明兩個數(shù)組里的元素是完全相同的

2017年10月5日 22:20
編輯回答
話寡

key去做排序,這里為什么要說key呢,這個key代表你認(rèn)為他們相同的條件,別用name去排序,比較的時候用value

當(dāng)然上面的方法不騷。兩個排序,加一個遍歷比較。

騷一點(diǎn)的。遍歷其中一個。放入對象里面,組成key:true的形式。然后遍歷另一個。判斷在存在不。等于遍歷兩次。

2017年3月21日 05:42
編輯回答
懶豬
function doSth($arr){
    sort($arr);//暫時解決
    return $arr;
}
2017年5月26日 03:38