InfoQ

交流

讨论:求教算法问题

作者 RedMarquis 发布于 0000-00-00 分类:php基础编程

n个数组求与

例如:有4个数组分别是
数组1:1 2 3 4 5 6 7 8 9
数组2:1 2 5 6 7 8 9
数组3:
数组4:1 2 8 9

理想结果:1 2 8 9

最大的问题是,如果数组3是空的,怎么求?



逛论坛交流求教算法问题

加入书签
digg+,
reddit+,
del.icio.us+,
dzone+

8 条回复

回复

既然是数组 求与, 那么如果有一个数.. 发表人 wangfeng_1981 发表于 12月01日
可以用 count($array) 来判断, 如果.. 发表人 wangfeng_1981 发表于 12月01日
老大,我知道这么判断,但是n个数组以来.. 发表人 RedMarquis 发表于 12月01日
QUOTE: 最初由 RedMarquis 发布.. 发表人 wangfeng_1981 发表于 12月01日
刚找到,呵呵,以前都是取数组元素来比.. 发表人 RedMarquis 发表于 12月01日
用这个函数求数组交集时, 如果有一个.. 发表人 wangfeng_1981 发表于 12月01日
会写:( 不过太长了点,想找个更好的.. 发表人 RedMarquis 发表于 12月01日
就算是 数组个数 是动态不确定的,也好.. 发表人 wangfeng_1981 发表于 12月01日
  1. 返回顶部

    Re: 求教算法问题

    2003年12月01日 发表人 wangfeng_1981

    既然是数组 求与,
    那么如果有一个数组为空,
    那么结果就应该为空!

    按照你的意思,是要忽略空数组,
    那你在取出下一个数组时,

    先判断数组是否为空,
    如果不空,则进行与运算,
    如果空,则跳过。

  2. 返回顶部

    Re: 求教算法问题

    2003年12月01日 发表人 wangfeng_1981

    可以用 count($array) 来判断,
    如果为0表示空

  3. 返回顶部

    Re: 求教算法问题

    2003年12月01日 发表人 RedMarquis

    老大,我知道这么判断,但是n个数组以来,我就死翘翘了

  4. 返回顶部

    Re: 求教算法问题

    2003年12月01日 发表人 wangfeng_1981


    QUOTE:
    最初由 RedMarquis 发布
    [B]老大,我知道这么判断,但是n个数组以来,我就死翘翘了 [/B]

    你的意思是说 数组的个数 是不确定的?
    你知道PHP求交集的函数吗?
    array array_intersect ( array array1, array array2 [, array ...])

    这个跟有多少个数组,有什么关系?
    随便 数组怎么变,是什么样子!
    都不成个问题啊!
    我不知道你到底要做什么?有什么问题

  5. 返回顶部

    Re: 求教算法问题

    2003年12月01日 发表人 RedMarquis

    刚找到,呵呵,以前都是取数组元素来比较,这下方便了,谢谢了
    数组的个数是确定的,只是不是固定的个数
    另外:判断非空很麻烦,总不能写下n个去判断啊

  6. 返回顶部

    Re: 求教算法问题

    2003年12月01日 发表人 wangfeng_1981

    用这个函数求数组交集时,
    如果有一个数组为空,则 交集为空,
    这也是正常的 交集运算!

    你如果要忽略空数组,还得自己写代码来排除,
    这个很简单啦,不要告诉我你不会写!

  7. 返回顶部

    Re: 求教算法问题

    2003年12月01日 发表人 RedMarquis

    会写:(
    不过太长了点,想找个更好的法子
    谢谢你了

  8. 返回顶部

    Re: 求教算法问题

    2003年12月01日 发表人 wangfeng_1981

    就算是 数组个数 是动态不确定的,也好办!
    下面的代码就行,注意下面的代码是按你的要求忽略了空数组的算法!

    将数组存储在一个2维数组里面
    [PHP]
    <?php
    $myarray2[]=array(1,2,3,4,5,6,7,8,9);
    $myarray2[]=array(1,2,5,6,7,8,9);
    $myarray2[]=array();
    $myarray2[]=array(1,2,8,9);
    // 这样可以动态定义N个1维数组,不限定数组个数
    ?>
    [/PHP]

    下面的代码就可以得到交集 $result,不管数组有多少个都行,并且忽略空数组
    [PHP]
    <?php
    $result=array();
    $first= true;
    foreach($myarray2 as $myarray1)
    if( count($myarray1)>0 )
    if ($first==true)
    {
    $result= $myarray1;
    $first= false;
    }
    else
    {$result= array_intersect($result, $myarray1);}
    ?>
    [/PHP]
    当然这样的执行效率大打折扣,
    根本比不上一次性调用
    $result= array_intersect ( array array1, array array2 [, array ...])




  9. 我有话要讲:(可以匿名发表, 发广告的有多远请滚多远!!!)

    昵称: 请输入验证码:


抢着回答

火龙 这个笑话 比你的怎么样

http://218.244.44.113/happy/show ... d=345096#post345096

vBulletin论坛升级的问题

我们的论坛是2.0.0版本的,现在下载了一个2.3.0的,里面也没有升...

PHP代码为何贴不上来?

PHP代码为何贴不上来?

如何知道浏览者已经不浏览本页面而跳到...

如何知道浏览者已经不浏览本页面而跳到其他页面?

配置phplib的问题

配置phplib后打开<? phpinfo();?>出现: Fatal error: C...

asp,php,jsp你更喜欢哪一个!

asp,php,jsp你接触过哪一个!

我的空间支持mysql吗?

我刚申请了一个免费的主页空间,是支持php的,但我不知道支不支持...

Apache的服务器,如何让局域网中的其它...

比如说在一个局域网中,每台电脑都有自己的一个IP,如192.168.0....

linux下怎麼重啟mysql服務?

如題

指教:php可以执行DOS下的exe程序吗?

各位老大: 请问php可以执行DOS下的exe程序吗? 在服务器端!

[]