PHP:所有可能會擷取一維陣列的組合
簡介
任務種程式應用中都會遇到從一維數組中檢索元素的所有可能組合的情況。它需要對迭代或遞歸方法有全面的了解才能得出所有可行的排列。
迭代方法
一種方法涉及使用迭代方法,如以下代碼所示:
<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);
輸出:
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>
解釋:
此迭代解決方案採用位元操作來產生所有可能的組合。透過將 $i 的值遞增到 0 和 (1
遞歸方法
或者,遞歸可以利用該方法來實現相同的結果:
<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);</code>
輸出:
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 )
輸出:
輸出:
輸出:輸出: 解釋:此遞歸解決方案透過連續將元素加到前綴並對數組中的其餘元素進行遞歸來產生組合。基本情況發生在數組為空時,從而產生有效的組合。然後以相反的順序傳回組合。 透過利用迭代或遞歸的方法,開發人員可以有效地從一維數組中檢索所有可能的元素組合,滿足不同程式設計場景的不同需求。以上是如何在 PHP 中從一維數組產生所有可能的組合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!