之前有一个业务场景,需要根据经纬度把一个圈子的里面的用户添加为好友。用户ID在一个数组内,需要把数组里面的userID一一组合且不能重复,百度遍了也没能找到合适的算法。然后自己试着写了一下,结果挺简单的。需要的朋友可以参考一下哦。代码如下:
<?php
$arr = [1,2,3,4,5];
$arr1 = $arr;
$arrAll = [];
$count = count($arr);
for ($k=0; $k<$count ;$k++ ){
for ($a=0; $a<count($arr) ;$a++ ){
// 主要是这个判断,userID重复的不添加到数组,第二个值比第一个值小的不加入数组
if ($arr[$k] != $arr[$a] && $a>$k) {
array_push($arrAll,[$arr[$k],$arr[$a]]);
}
}
}
var_dump(json_encode($arrAll,320));
//输出结果:string(61) "[[1,2],[1,3],[1,4],[1,5],[2,3],[2,4],[2,5],[3,4],[3,5],[4,5]]"
/* 删除判断后的结果:string(151) "[[1,1],[1,2],[1,3],[1,4],[1,5],[2,1],[2,2],[2,3],
[2,4],[2,5],[3,1],[3,2],[3,3],[3,4],[3,5],[4,1],[4,2],[4,3],[4,4],[4,5],[5,1],[5,2],
[5,3],[5,4],[5,5]]"*/