火龙 这个笑话 比你的怎么样
http://218.244.44.113/happy/show ... d=345096#post345096
- 娱乐乐园,
作者 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是空的,怎么求?
逛论坛交流:求教算法问题
既然是数组 求与,
那么如果有一个数组为空,
那么结果就应该为空!
按照你的意思,是要忽略空数组,
那你在取出下一个数组时,
先判断数组是否为空,
如果不空,则进行与运算,
如果空,则跳过。
可以用 count($array) 来判断,
如果为0表示空
老大,我知道这么判断,但是n个数组以来,我就死翘翘了
QUOTE: 最初由 RedMarquis 发布
[B]老大,我知道这么判断,但是n个数组以来,我就死翘翘了 [/B]
你的意思是说 数组的个数 是不确定的?
你知道PHP求交集的函数吗?
array array_intersect ( array array1, array array2 [, array ...])
这个跟有多少个数组,有什么关系?
随便 数组怎么变,是什么样子!
都不成个问题啊!
我不知道你到底要做什么?有什么问题
刚找到,呵呵,以前都是取数组元素来比较,这下方便了,谢谢了
数组的个数是确定的,只是不是固定的个数
另外:判断非空很麻烦,总不能写下n个去判断啊
用这个函数求数组交集时,
如果有一个数组为空,则 交集为空,
这也是正常的 交集运算!
你如果要忽略空数组,还得自己写代码来排除,
这个很简单啦,不要告诉我你不会写!
会写:(
不过太长了点,想找个更好的法子
谢谢你了
就算是 数组个数 是动态不确定的,也好办!
下面的代码就行,注意下面的代码是按你的要求忽略了空数组的算法!
将数组存储在一个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 ...])
8 条回复
回复