“晚风吹人醒 万事藏于心 
        我没说不公平 也没说苦 我说我知道了”

二维数组循环拼成多种组合

    $count = count($where_str);
    for ($i=$count-1; $i >=1 ; $i--) { 
    $t = $this->getCombinationToString($where_str, $i);
    $t2 = $this->getunique($t);
      foreach ($t2 as $key => $val) {
          var_dump($val);
          echo "</br>";                        
      }                
    }
    function getunique($t){
        $t2 = array();
        for($i=0;$i<count($t);$i++){
            $count_list = array_count_values($t[$i]);
            $flag = 1;
            foreach($count_list as $ck=>$cv){
                if($cv>1){
                    $flag = 0;
                    break;
                }
            }
            if($flag){
                sort($t[$i]);
                $flag2 = 1;
                if($t2){
                    foreach($t2 as $t2k=>$t2v){
                        if($t[$i]==$t2v){
                            $flag2 = 0;
                            break;
                        }
                    }
                }
                if($flag2){
                    $t2[] = $t[$i];
                }
            }
        }
        return $t2;
    }
     
    function getCombinationToString($arr, $m) {
        if ($m ==1) {
         return $arr;
        }
        $result = array();
         
        $tmpArr = $arr;
        unset($tmpArr[0]);
        for($i=0;$i<count($arr);$i++) {
            $s = $arr[$i];
$ret = $this->getCombinationToString(array_values($tmpArr), ($m-1), $result);
            foreach($ret as $row) {
                //$result[] = $s . $row;
                $temp = array();
                $temp[] = $s;
                if(is_array($row)){
                    $temp = array_merge($temp,$row);
                }else{
                    $temp[] = $row;
                }
                sort($temp);
                $result[] = $temp;
            }
        }
     return $result;
    }

 

posted on 2021-01-27 11:22  诗里刻画的影子  阅读(133)  评论(0编辑  收藏  举报