Home > Article > Backend Development > How to Generate All Possible Combinations from a 1D Array in PHP?
PHP: Retrieval of All Possible Combinations of a 1D Array
Introduction
The task of retrieving all possible combinations of elements from a 1D array can be encountered in various programming applications. It requires a comprehensive understanding of iterative or recursive approaches to derive all feasible permutations.
Iterative Approach
One method involves using an iterative approach, as demonstrated in the following code:
<code class="php">function getCombinations($arr) { $result = array(); $count = count($arr); for ($i = 0; $i < (1 << $count); $i++) { $combination = array(); for ($j = 0; $j < $count; $j++) { if (($i & (1 << $j)) != 0) { $combination[] = $arr[$j]; } } $result[] = $combination; } return $result; } $array = array('Alpha', 'Beta', 'Gamma'); $combinations = getCombinations($array); print_r($combinations);
Output:
Array ( [0] => Array ( ) [1] => Array ( [0] => Alpha ) [2] => Array ( [0] => Beta ) [3] => Array ( [0] => Alpha [1] => Beta ) [4] => Array ( [0] => Gamma ) [5] => Array ( [0] => Alpha [1] => Gamma ) [6] => Array ( [0] => Beta [1] => Gamma ) [7] => Array ( [0] => Alpha [1] => Beta [2] => Gamma ) )</code>
Explanation:
This iterative solution employs bit manipulation to generate all possible combinations. By incrementing the value of $i through all possible values between 0 and (1 << $count) - 1, the bit pattern corresponding to each combination is established. Checking whether a specific bit in this pattern is set allows the determination of which elements from the input array belong to the current combination.
Recursive Approach
Alternatively, a recursive approach can be utilized to achieve the same result:
<code class="php">function getCombinations($arr, $prefix = '') { $result = array(); foreach ($arr as $element) { $result[] = $prefix . $element; $result = array_merge($result, getCombinations($arr, $prefix . $element . ' ')); } return $result; } $array = array('Alpha', 'Beta', 'Gamma'); $combinations = getCombinations($array); print_r($combinations);
Output:
Array ( [0] => Alpha [1] => Alpha Beta [2] => Alpha Beta Gamma [3] => Alpha Gamma [4] => Alpha Gamma Beta [5] => Beta [6] => Beta Alpha [7] => Beta Alpha Gamma [8] => Beta Gamma [9] => Beta Gamma Alpha [10] => Gamma [11] => Gamma Alpha [12] => Gamma Alpha Beta [13] => Gamma Beta [14] => Gamma Beta Alpha )Explanation:
This recursive solution generates combinations by successively adding elements to the prefix and recursing on the remaining elements in the array. The base case occurs when the array is empty, resulting in a valid combination. The combinations are then returned in reverse order.
By utilizing either an iterative or recursive approach, developers can effectively retrieve all possible combinations of elements from a 1D array, catering to the diverse requirements of different programming scenarios.
The above is the detailed content of How to Generate All Possible Combinations from a 1D Array in PHP?. For more information, please follow other related articles on the PHP Chinese website!