php 数组的几个小算法

时间:2023-12-27 08:17:25

1. 判断a数组是否为b数组的子集

 <?php
$a = array('apple','orange');
$b = array('apple','banana','ornage'); $arr = array_diff($a,$b);
if($arr){ echo 'no'}else {echo 'yes'}

在数组比较大,占用巨量内存时,这样比较不合适,可以用下面的

 <?php
do{
foreach ($a as $aItem){
if(in_array($aItem,$b)){
continue;
} else{
$flag = false;break;
}
}
}while(0);

2. 输出一个数组的所有子集

 $a=array(1,2,3);
$n = count ($a);
$nn = pow(2,$n);
for($i=0;$i<$nn;$i++){
  $m=sprintf('%0'.$n.'b',$i);
  for($j=0;$j<$n;$j++){
    if($m{$j}==0) $tmp[]=$a[$j];
  }
  $arr[] = '['.implode(',',$tmp).']';
}
var_dump($arr);

太晚了,就写这俩吧.