[字号:  ]

计算两组数里的相邻数个数

发布时间:2008-10-06 18:03   作者: zsycnc   信息来源: PHPChina 开源社区门户
有两组组,
第一组:02,06,09,15,20,25,26,30,32
第二组: 03,04,05,06,07,19,25,30

怎样知道这两组数里有多少个相同数。
怎样知道每组里有几个相邻数,030405这样的。
谢谢

谢谢几位兄弟的帮助。

[ 本帖最后由 zsycnc 于 2008-10-7 10:56 编辑 ]

最新回复

dongxin1390008 at 2008-10-06 18:16:10
第一个问题:使用array_intersect函数即可
imkow at 2008-10-06 19:42:00
悄悄说一下,这叫取“交集”,
??相邻是啥??
zsycnc at 2008-10-06 20:26:16
也就是查找有几个像03,04这样的数。
谢谢
zsycnc at 2008-10-06 21:07:59
请教怎样计算,01,02,04,06,08,09,10,0,12这里面有几个相邻数,相邻数就是里面的01 02 和08,09,10

谢谢
linvo at 2008-10-06 21:59:41
越听越糊涂....
zsycnc at 2008-10-06 22:18:15

QUOTE:

原帖由 zsycnc 于 2008-10-6 21:07 发表
请教怎样查找,01,02,04,06,08,09,10,0,12这里面有几个相邻数,相邻数就是里面的01 02 和08,09,10

谢谢
也就是怎样知道有几组像01 02 和08,09,10这样的数。上面是两组.

谢谢。
linvo at 2008-10-06 22:53:22
3喽把我说迷糊了。。。

直接写的,没有测试,大概思路如此
zsycnc at 2008-10-06 23:04:39
谢谢兄弟,我去试。刚学php

谢谢你,按你的方法搞定了相连的数。


[ 本帖最后由 zsycnc 于 2008-10-6 23:59 编辑 ]
spzgy at 2008-10-07 00:39:03
看完整张贴子我都不知道到底是求交集,还是求什么“相邻数”,完全搞不懂, linvo既然能理解楼主想表达的意思,厉害,哈哈哈
异度冰晶 at 2008-10-07 09:31:26
相邻数


[ 本帖最后由 异度冰晶 于 2008-10-7 09:32 编辑 ]
zsycnc at 2008-10-07 09:39:21
$gg ="01,02,08,09,10,15,11";
$hh ="03,04,07,08,09,10,11";
$arr1 = explode(",",substr($gg,0,14));
$fff = explode(",",substr($hh,0,14));
//echo substr($gg,0,14);
$a11 =array("a","b","c","h","j");
$a12 =array("b","c","j","e","h");
$ch = 0;
$lh = 0;
sort($a11);
foreach($a11 as $index => $value) {
    if($index == 0 && $value + 1 === $arr1[$index + 1] || $value - 1 === $arr1[$index - 1]) {
        echo $value;
    }
}
你的方法无显示。
异度冰晶 at 2008-10-07 09:44:08
不支持字符判定,如果你要支持字符的就要改一下
zsycnc at 2008-10-07 09:51:11
不要字符,只判定数字
$gg ="01,02,08,09,10,15,11";
$hh ="03,04,07,08,09,10,11";
$arr1 = explode(",",substr($gg,0,14));
$fff = explode(",",substr($hh,0,14));
谢谢。能再帮改下吗?
还有就是找出$arr1与$fff两个里面相同数的个数吗?上面相同的是08,09,10,11
谢谢
异度冰晶 at 2008-10-07 10:00:12
哦,严格来说你的是个字符数组,我为了省几个if用了全等于,哈哈。

至于相同的数,别人不是跟你说了么,array_intersect
zsycnc at 2008-10-07 10:55:15
谢谢,全部搞定。

CODE:

sort($arr1);
foreach($arr1 as $index => $value) {
    if(isset($arr1[$index + 1]) && $value + 1 == $arr1[$index + 1] || $index > 0 && $value - 1 == $arr1[$index - 1]) {
        echo $value, ',';
    }
}
不过你的这个在一个for循环里运行就不准确。我有50多条数组或更多。

你的这行代码更简洁些。我看能不能再改进下。



[ 本帖最后由 zsycnc 于 2008-10-7 11:29 编辑 ]
lsnow at 2008-10-07 11:26:23
第二题可以这样考虑
1)先将数组A排序。
2)复制A到数组B,unset掉数组B的的一项。
3)数组B内所有元素+1。
4)找AB交集。