publicfunctiontest(){ $data=[ [1,2,3], [4,5], [6,7] ]; $list=[]; foreach($data[0]as$k=>$v){ foreach($data[1]as$kk=>$vv){ foreach($data[2]as$kkk=>$vvv){ $list[]=[$v,$vv,$vvv]; } } } echo"<pre>"; print_r($list); }
用递归方式将示例改造,这样就可以无限制数组长度了
public$list=[]; publicfunctiontest(){ $data=[ [1,2,3], [4,5], [6,7] ]; echo"<pre>"; $this->arrayRecurse($data,0,[]); print_r($this->list);exit; } privatefunctionarrayRecurse($data,$ii,$tmp){ for($i=0;$i<count($data[$ii]);$i++){ $j=$ii+1; $tmp[$ii]=$i; if($j<count($data)){ $this->arrayRecurse($data,$j,$tmp); } if($j==count($data)){ $t=[]; for($x=0;$x<count($data);$x++){ $t[]=$data[$x][$tmp[$x]]; } if(!empty($t)){ $this->list[]=$t; } } } }