How to print all possible unique combinations of multiple strings in PHP

1 Answer

0 votes
function getUniqueCombinations($arr, $min = 1, $max = 100) {
    $words_count = count($arr);
    $combinations_count = pow(2, $words_count);
   
    $combinations_arr = array();
    for ($i = 0; $i < $combinations_count; $i ++) {
        // 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
        $binary_number = sprintf("%0" . $words_count . "b", $i); 
        $one_combination_arr = array();
        for ($j = 0; $j < $words_count; $j ++) {
            $binary_number{$j} == '1' and $one_combination_arr[] = $arr[$j];
        }

        count($one_combination_arr) >= $min && count($one_combination_arr) <= $max 
                                       and $combinations_arr[] = $one_combination_arr;
    }
    return $combinations_arr;
}


$s = "PHP general-purpose scripting language";
$arr1 = preg_split("/[\s,-.]+/", $s);

$s = "It was originally created by Danish"; 
$arr2 = preg_split("/[\s,-.]+/", $s);

$s = "PHP Tutorial. PHP server scripting language";
$arr3 = preg_split("/[\s,-.]+/", $s);

$combinations_arr = getUniqueCombinations($arr1);
$combinations_arr = array_merge($combinations_arr, getUniqueCombinations($arr2));
$combinations_arr = array_merge($combinations_arr, getUniqueCombinations($arr3));

// Convert multidimensional array into single array
$arr = array_map(function($s) { return implode(" ", $s); }, $combinations_arr);

// Remove duplicates from string
for ($i = 0; $i < count($arr); $i++)
    $arr[$i] = implode(' ',array_unique(explode(' ', $arr[$i])));

$arr = array_unique($arr);

// reindex array
$arr = array_values($arr);

print_r($arr);

 
 
 
 
/*
run:
 
Array
(
    [0] => language
    [1] => scripting
    [2] => scripting language
    [3] => purpose
    [4] => purpose language
    [5] => purpose scripting
    [6] => purpose scripting language
    [7] => general
    [8] => general language
    [9] => general scripting
    [10] => general scripting language
    [11] => general purpose
    [12] => general purpose language
    [13] => general purpose scripting
    [14] => general purpose scripting language
    [15] => PHP
    [16] => PHP language
    [17] => PHP scripting
    [18] => PHP scripting language
    [19] => PHP purpose
    [20] => PHP purpose language
    [21] => PHP purpose scripting
    [22] => PHP purpose scripting language
    [23] => PHP general
    [24] => PHP general language
    [25] => PHP general scripting
    [26] => PHP general scripting language
    [27] => PHP general purpose
    [28] => PHP general purpose language
    [29] => PHP general purpose scripting
    [30] => PHP general purpose scripting language
    [31] => Danish
    [32] => by
    [33] => by Danish
    [34] => created
    [35] => created Danish
    [36] => created by
    [37] => created by Danish
    [38] => originally
    [39] => originally Danish
    [40] => originally by
    [41] => originally by Danish
    [42] => originally created
    [43] => originally created Danish
    [44] => originally created by
    [45] => originally created by Danish
    [46] => was
    [47] => was Danish
    [48] => was by
    [49] => was by Danish
    [50] => was created
    [51] => was created Danish
    [52] => was created by
    [53] => was created by Danish
    [54] => was originally
    [55] => was originally Danish
    [56] => was originally by
    [57] => was originally by Danish
    [58] => was originally created
    [59] => was originally created Danish
    [60] => was originally created by
    [61] => was originally created by Danish
    [62] => It
    [63] => It Danish
    [64] => It by
    [65] => It by Danish
    [66] => It created
    [67] => It created Danish
    [68] => It created by
    [69] => It created by Danish
    [70] => It originally
    [71] => It originally Danish
    [72] => It originally by
    [73] => It originally by Danish
    [74] => It originally created
    [75] => It originally created Danish
    [76] => It originally created by
    [77] => It originally created by Danish
    [78] => It was
    [79] => It was Danish
    [80] => It was by
    [81] => It was by Danish
    [82] => It was created
    [83] => It was created Danish
    [84] => It was created by
    [85] => It was created by Danish
    [86] => It was originally
    [87] => It was originally Danish
    [88] => It was originally by
    [89] => It was originally by Danish
    [90] => It was originally created
    [91] => It was originally created Danish
    [92] => It was originally created by
    [93] => It was originally created by Danish
    [94] => server
    [95] => server language
    [96] => server scripting
    [97] => server scripting language
    [98] => PHP server
    [99] => PHP server language
    [100] => PHP server scripting
    [101] => PHP server scripting language
    [102] => Tutorial
    [103] => Tutorial language
    [104] => Tutorial scripting
    [105] => Tutorial scripting language
    [106] => Tutorial server
    [107] => Tutorial server language
    [108] => Tutorial server scripting
    [109] => Tutorial server scripting language
    [110] => Tutorial PHP
    [111] => Tutorial PHP language
    [112] => Tutorial PHP scripting
    [113] => Tutorial PHP scripting language
    [114] => Tutorial PHP server
    [115] => Tutorial PHP server language
    [116] => Tutorial PHP server scripting
    [117] => Tutorial PHP server scripting language
    [118] => PHP Tutorial
    [119] => PHP Tutorial language
    [120] => PHP Tutorial scripting
    [121] => PHP Tutorial scripting language
    [122] => PHP Tutorial server
    [123] => PHP Tutorial server language
    [124] => PHP Tutorial server scripting
    [125] => PHP Tutorial server scripting language
)

*/

 



answered Jun 26, 2021 by avibootz
...