1. 判断a数组是否为b数组的子集
1 <?php 2 $a = array(‘apple‘,‘orange‘); 3 $b = array(‘apple‘,‘banana‘,‘ornage‘); 4 5 $arr = array_diff($a,$b); 6 if($arr){ echo ‘no‘}else {echo ‘yes‘}
在数组比较大,占用巨量内存时,这样比较不合适,可以用下面的
1 <?php 2 do{ 3 foreach ($a as $aItem){ 4 if(in_array($aItem,$b)){ 5 continue; 6 } else{ 7 $flag = false;break; 8 } 9 } 10 }while(0);
2. 输出一个数组的所有子集
1 $a=array(1,2,3); 2 $n = count ($a); 3 $nn = pow(2,$n); 4 for($i=0;$i<$nn;$i++){ 5 $m=sprintf(‘%0‘.$n.‘b‘,$i); 6 for($j=0;$j<$n;$j++){ 7 if($m{$j}==0) $tmp[]=$a[$j]; 8 } 9 $arr[] = ‘[‘.implode(‘,‘,$tmp).‘]‘; 10 } 11 var_dump($arr);
太晚了,就写这俩吧.
时间: 2024-12-29 12:29:44