Home > Backend Development > PHP Tutorial > How can I generate all possible combinations from a 1D array in PHP, including both combinations and permutations?

How can I generate all possible combinations from a 1D array in PHP, including both combinations and permutations?

DDD
Release: 2024-10-28 20:34:02
Original
392 people have browsed it

How can I generate all possible combinations from a 1D array in PHP, including both combinations and permutations?

Getting All Possible Combinations in PHP: A Comprehensive Solution

Retrieving all possible combinations from a 1D array can be a complex task, especially when considering both combinations and permutations. While there are various approaches to this problem, one highly effective solution involves implementing a recursive function.

The recursive function, depth_picker(), performs depth-first search on the array, exploring all branches and combining elements to form combinations. It maintains a temporary string that is gradually modified with each element, while a collect array stores the final combinations. Let's examine how this function operates:

  1. Base Case: If the temporary string is empty, it means that a standalone element is being considered. In this case, it is directly added to the collect array.
  2. Recursive Exploration: When an element is to be combined, the function creates a copy of the original array and removes the current element from it. It then recursively calls depth_picker() on the modified array, passing the updated temporary string with the added element. If there are more elements to combine, it continues the recursive process.
  3. Combinations and Permutations: By iterating through each element and recursively combining them, depth_picker() effectively generates all possible combinations and permutations without repetition. This approach ensures both variations of strings ('Alpha Beta' and 'Beta Alpha') are included in the final output.
  4. Final Result: When the function has explored all combinations, the collect array contains the complete set of all possible combinations from the input array.

Implementation and Execution

To implement this depth-first search and retrieval of combinations, the following PHP code can be employed:

<code class="php"><?php

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

function depth_picker($arr, $temp_string, &amp;$collect) {
    if ($temp_string != "")
        $collect []= $temp_string;

    for ($i=0, $iMax = sizeof($arr); $i < $iMax; $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);

?></code>
Copy after login

Upon execution, this code outputs the following array of all possible combinations and arrangements:

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
)
Copy after login

This approach provides a comprehensive and efficient solution for obtaining all possible combinations of elements in an array, ensuring that both combinations and different arrangements are included in the output.

The above is the detailed content of How can I generate all possible combinations from a 1D array in PHP, including both combinations and permutations?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template