1

i have a code giving me possible combinations, but its missing the combinations of each array. please let me know how i can generate the combinations of each array as well. like after running stated code i will get possible combinations....but i need the combinations like (rough,medium,small) as well.....

$array1 = array('rough', 'smooth', 'coarse');
$array2 = array('shiny', 'matte', 'rough');
$array3 = array('very large', 'large', 'medium', 'small');

foreach($array1 as $i)
    foreach($array2 as $j)
        foreach($array3 as $k)
            $output[] = "$i, $j, $k";

var_dump($output);
1
  • The code you've provided is all you need for getting all possible combinations of array1,array2,array3. Are you asking for ALL combinations, including ones like "array1,array2,array2"? Commented Apr 11, 2012 at 3:14

3 Answers 3

1
$array1 = array('rough', 'smooth', 'coarse');
$array2 = array('shiny', 'matte', 'rough');
$array3 = array('very large', 'large', 'medium', 'small');

$array=array_merge($array1,$array2,$array3);

$combinations=array();
for($x=0;$x<(count($array)-2);$x++) {
    $a=$array[$x];
    for ($y=$x+1;$y<count($array);$y++) {
        $b=$array[$y];
        for ($z=$y+1;$z<count($array);$z++) {
            $c=$array[$z];
            $combinations[]="$a, $b, $c";
        }
    }
}

This outputs every possible combination of all the values, without repeating any. As shown below:

Array
(
    [0] => rough, smooth, coarse
    [1] => rough, smooth, shiny
    [2] => rough, smooth, matte
    [3] => rough, smooth, rough
    [4] => rough, smooth, very large
    [5] => rough, smooth, large
    [6] => rough, smooth, medium
    [7] => rough, smooth, small
    [8] => rough, coarse, shiny
    [9] => rough, coarse, matte
    [10] => rough, coarse, rough
    [11] => rough, coarse, very large
    [12] => rough, coarse, large
    [13] => rough, coarse, medium
    [14] => rough, coarse, small
    [15] => rough, shiny, matte
    [16] => rough, shiny, rough
    [17] => rough, shiny, very large
    [18] => rough, shiny, large
    [19] => rough, shiny, medium
    [20] => rough, shiny, small
    [21] => rough, matte, rough
    [22] => rough, matte, very large
    [23] => rough, matte, large
    [24] => rough, matte, medium
    [25] => rough, matte, small
    [26] => rough, rough, very large
    [27] => rough, rough, large
    [28] => rough, rough, medium
    [29] => rough, rough, small
    [30] => rough, very large, large
    [31] => rough, very large, medium
    [32] => rough, very large, small
    [33] => rough, large, medium
    [34] => rough, large, small
    [35] => rough, medium, small
    [36] => smooth, coarse, shiny
    [37] => smooth, coarse, matte
    [38] => smooth, coarse, rough
    [39] => smooth, coarse, very large
    [40] => smooth, coarse, large
    [41] => smooth, coarse, medium
    [42] => smooth, coarse, small
    [43] => smooth, shiny, matte
    [44] => smooth, shiny, rough
    [45] => smooth, shiny, very large
    [46] => smooth, shiny, large
    [47] => smooth, shiny, medium
    [48] => smooth, shiny, small
    [49] => smooth, matte, rough
    [50] => smooth, matte, very large
    [51] => smooth, matte, large
    [52] => smooth, matte, medium
    [53] => smooth, matte, small
    [54] => smooth, rough, very large
    [55] => smooth, rough, large
    [56] => smooth, rough, medium
    [57] => smooth, rough, small
    [58] => smooth, very large, large
    [59] => smooth, very large, medium
    [60] => smooth, very large, small
    [61] => smooth, large, medium
    [62] => smooth, large, small
    [63] => smooth, medium, small
    [64] => coarse, shiny, matte
    [65] => coarse, shiny, rough
    [66] => coarse, shiny, very large
    [67] => coarse, shiny, large
    [68] => coarse, shiny, medium
    [69] => coarse, shiny, small
    [70] => coarse, matte, rough
    [71] => coarse, matte, very large
    [72] => coarse, matte, large
    [73] => coarse, matte, medium
    [74] => coarse, matte, small
    [75] => coarse, rough, very large
    [76] => coarse, rough, large
    [77] => coarse, rough, medium
    [78] => coarse, rough, small
    [79] => coarse, very large, large
    [80] => coarse, very large, medium
    [81] => coarse, very large, small
    [82] => coarse, large, medium
    [83] => coarse, large, small
    [84] => coarse, medium, small
    [85] => shiny, matte, rough
    [86] => shiny, matte, very large
    [87] => shiny, matte, large
    [88] => shiny, matte, medium
    [89] => shiny, matte, small
    [90] => shiny, rough, very large
    [91] => shiny, rough, large
    [92] => shiny, rough, medium
    [93] => shiny, rough, small
    [94] => shiny, very large, large
    [95] => shiny, very large, medium
    [96] => shiny, very large, small
    [97] => shiny, large, medium
    [98] => shiny, large, small
    [99] => shiny, medium, small
    [100] => matte, rough, very large
    [101] => matte, rough, large
    [102] => matte, rough, medium
    [103] => matte, rough, small
    [104] => matte, very large, large
    [105] => matte, very large, medium
    [106] => matte, very large, small
    [107] => matte, large, medium
    [108] => matte, large, small
    [109] => matte, medium, small
    [110] => rough, very large, large
    [111] => rough, very large, medium
    [112] => rough, very large, small
    [113] => rough, large, medium
    [114] => rough, large, small
    [115] => rough, medium, small
    [116] => very large, large, medium
    [117] => very large, large, small
    [118] => very large, medium, small
    [119] => large, medium, small
)
Sign up to request clarification or add additional context in comments.

Comments

1

I guess this is what you want

$array1 = array('rough', 'smooth', 'coarse');
$array2 = array('shiny', 'matte', 'rough');
$array3 = array('very large', 'large', 'medium', 'small');

generateCcombination(array($array1,$array2,$array3));
function generateCcombination($array) {
    global $codes, $pos;
    if(count($array)) {
        for($i=0; $i<count($array[0]); $i++) {
            $tmp = $array;
            $codes[$pos] = $array[0][$i];
            $tarr = array_shift($tmp);
            $pos++;
            generateCcombination($tmp);
        }
    } else {
        echo join(", ", $codes)."<br/>";
    }
    $pos--;
}

Output

rough, shiny, very large
rough, shiny, large
rough, shiny, medium
rough, shiny, small
rough, matte, very large
rough, matte, large
rough, matte, medium
rough, matte, small
rough, rough, very large
rough, rough, large
rough, rough, medium
rough, rough, small
rough, shiny, very large, smooth
rough, shiny, large, smooth
rough, shiny, medium, smooth
rough, shiny, small, smooth
rough, matte, very large, smooth
rough, matte, large, smooth
rough, matte, medium, smooth
rough, matte, small, smooth
rough, rough, very large, smooth
rough, rough, large, smooth
rough, rough, medium, smooth
rough, rough, small, smooth
rough, shiny, very large, coarse
rough, shiny, large, coarse
rough, shiny, medium, coarse
rough, shiny, small, coarse
rough, matte, very large, coarse
rough, matte, large, coarse
rough, matte, medium, coarse
rough, matte, small, coarse
rough, rough, very large, coarse
rough, rough, large, coarse
rough, rough, medium, coarse
rough, rough, small, coarse

Comments

1

The question ins not very clear, but it seems to me that you want each array to be used multiple times in the combination. Try this:

$array1 = array('rough', 'smooth', 'coarse');
$array2 = array('shiny', 'matte', 'rough');
$array3 = array('very large', 'large', 'medium', 'small');

$combinedArray=array_merge($array1, $array2, $array3);

foreach($combinedArray as $i)
    foreach($combinedArray as $j)
        foreach($combinedArray as $k)
            $output[] = "$i, $j, $k";

var_dump($output);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.