복붙노트

PHP : 1D 배열의 모든 가능한 조합을 얻는 방법? [복제]

PHP

PHP : 1D 배열의 모든 가능한 조합을 얻는 방법? [복제]

나는 SO에서 제안 된 답변을 많이 읽었으며 시도했지만 어느 누구도 문제를 해결하지 못했습니다.

$array = array('Alpha', 'Beta', 'Gamma');

가능한 모든 조합을 얻는 방법?

예상 출력 :

array('Alpha',
      'Beta',
      'Gamma',
      'Alpha Beta',
      'Alpha Gamma',
      'Beta Alpha',
      'Beta Gamma',
      'Gamma Alpha',
      'Gamma Beta',
      'Alpha Beta Gamma',
      'Alpha Gamma Beta',
      'Beta Alpha Gamma',
      'Beta Gamma Alpha',
      'Gamma Alpha Beta',
      'Gamma Beta Alpha')

참고 : 내가 찾고있는 대답은 모든 조합과 모든 다른 배열을 포함해야합니다. 예 : 'Alpha Beta'및 'Beta Alpha'는 2 개의 다른 문자열이며 모두 출력 배열에 있어야합니다.

미리 감사드립니다.

해결법

  1. ==============================

    1.교수님이이 솔루션으로 더 행복해질 것이라고 믿습니다.

    교수님이이 솔루션으로 더 행복해질 것이라고 믿습니다.

    <?php
    
    $array = array('Alpha', 'Beta', 'Gamma', 'Sigma');
    
    function depth_picker($arr, $temp_string, &$collect) {
        if ($temp_string != "") 
            $collect []= $temp_string;
    
        for ($i=0; $i<sizeof($arr);$i++) {
            $arrcopy = $arr;
            $elem = array_splice($arrcopy, $i, 1); // removes and returns the i'th element
            if (sizeof($arrcopy) > 0) {
                depth_picker($arrcopy, $temp_string ." " . $elem[0], $collect);
            } else {
                $collect []= $temp_string. " " . $elem[0];
            }   
        }   
    }
    
    $collect = array();
    depth_picker($array, "", $collect);
    print_r($collect);
    
    ?>
    

    이것으로 해결할 수 있습니다.

    Array
    (
        [0] =>  Alpha
        [1] =>  Alpha Beta
        [2] =>  Alpha Beta Gamma
        [3] =>  Alpha Beta Gamma Sigma
        [4] =>  Alpha Beta Sigma
        [5] =>  Alpha Beta Sigma Gamma
        [6] =>  Alpha Gamma
        [7] =>  Alpha Gamma Beta
        [8] =>  Alpha Gamma Beta Sigma
        [9] =>  Alpha Gamma Sigma
        [10] =>  Alpha Gamma Sigma Beta
        [11] =>  Alpha Sigma
        [12] =>  Alpha Sigma Beta
        [13] =>  Alpha Sigma Beta Gamma
        [14] =>  Alpha Sigma Gamma
        [15] =>  Alpha Sigma Gamma Beta
        [16] =>  Beta
        [17] =>  Beta Alpha
        [18] =>  Beta Alpha Gamma
        [19] =>  Beta Alpha Gamma Sigma
        [20] =>  Beta Alpha Sigma
        [21] =>  Beta Alpha Sigma Gamma
        [22] =>  Beta Gamma
        [23] =>  Beta Gamma Alpha
        [24] =>  Beta Gamma Alpha Sigma
        [25] =>  Beta Gamma Sigma
        [26] =>  Beta Gamma Sigma Alpha
        [27] =>  Beta Sigma
        [28] =>  Beta Sigma Alpha
        [29] =>  Beta Sigma Alpha Gamma
        [30] =>  Beta Sigma Gamma
        [31] =>  Beta Sigma Gamma Alpha
        [32] =>  Gamma
        [33] =>  Gamma Alpha
        [34] =>  Gamma Alpha Beta
        [35] =>  Gamma Alpha Beta Sigma
        [36] =>  Gamma Alpha Sigma
        [37] =>  Gamma Alpha Sigma Beta
        [38] =>  Gamma Beta
        [39] =>  Gamma Beta Alpha
        [40] =>  Gamma Beta Alpha Sigma
        [41] =>  Gamma Beta Sigma
        [42] =>  Gamma Beta Sigma Alpha
        [43] =>  Gamma Sigma
        [44] =>  Gamma Sigma Alpha
        [45] =>  Gamma Sigma Alpha Beta
        [46] =>  Gamma Sigma Beta
        [47] =>  Gamma Sigma Beta Alpha
        [48] =>  Sigma
        [49] =>  Sigma Alpha
        [50] =>  Sigma Alpha Beta
        [51] =>  Sigma Alpha Beta Gamma
        [52] =>  Sigma Alpha Gamma
        [53] =>  Sigma Alpha Gamma Beta
        [54] =>  Sigma Beta
        [55] =>  Sigma Beta Alpha
        [56] =>  Sigma Beta Alpha Gamma
        [57] =>  Sigma Beta Gamma
        [58] =>  Sigma Beta Gamma Alpha
        [59] =>  Sigma Gamma
        [60] =>  Sigma Gamma Alpha
        [61] =>  Sigma Gamma Alpha Beta
        [62] =>  Sigma Gamma Beta
        [63] =>  Sigma Gamma Beta Alpha
    )
    
  2. from https://stackoverflow.com/questions/10834393/php-how-to-get-all-possible-combinations-of-1d-array by cc-by-sa and MIT license