Skip to content

Instantly share code, notes, and snippets.

@coresh
Forked from farinspace/combos.php
Created November 4, 2024 11:21
Show Gist options
  • Save coresh/47e6c6d60c59467eb87d7e309f987c7c to your computer and use it in GitHub Desktop.
Save coresh/47e6c6d60c59467eb87d7e309f987c7c to your computer and use it in GitHub Desktop.

Revisions

  1. @farinspace farinspace revised this gist Jan 9, 2017. 1 changed file with 18 additions and 25 deletions.
    43 changes: 18 additions & 25 deletions combos.php
    Original file line number Diff line number Diff line change
    @@ -1,32 +1,25 @@
    function combos($data, $all = array(), $group = array(), $val = null, $i = 0)
    {
    if (isset($val))
    {
    array_push($group, $val);
    }
    <?php

    if ($i >= count($data))
    {
    array_push($all, $group);
    }
    else
    {
    foreach ($data[$i] as $v)
    {
    combos($data, &$all, $group, $v, $i + 1);
    }
    }

    return $all;
    function combos($data, &$all = array(), $group = array(), $val = null, $i = 0) {
    if (isset($val)) {
    array_push($group, $val);
    }
    if ($i >= count($data)) {
    array_push($all, $group);
    } else {
    foreach ($data[$i] as $v) {
    combos($data, $all, $group, $v, $i + 1);
    }
    }
    return $all;
    }

    $data = array
    (
    array('a', 'b'),
    array('e', 'f', 'g'),
    array('w', 'x', 'y', 'z'),
    $data = array(
    array('a', 'b'),
    array('e', 'f', 'g'),
    array('w', 'x', 'y', 'z'),
    );

    $combos = combos($data);

    print_r($combos);
    echo '<pre>'; print_r($combos); echo '</pre>';
  2. Dimas Begunoff revised this gist Aug 5, 2011. No changes.
  3. Dimas Begunoff renamed this gist Aug 5, 2011. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  4. Dimas Begunoff revised this gist Aug 5, 2011. 1 changed file with 170 additions and 0 deletions.
    170 changes: 170 additions & 0 deletions output.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,170 @@
    Array
    (
    [0] => Array
    (
    [0] => a
    [1] => e
    [2] => w
    )

    [1] => Array
    (
    [0] => a
    [1] => e
    [2] => x
    )

    [2] => Array
    (
    [0] => a
    [1] => e
    [2] => y
    )

    [3] => Array
    (
    [0] => a
    [1] => e
    [2] => z
    )

    [4] => Array
    (
    [0] => a
    [1] => f
    [2] => w
    )

    [5] => Array
    (
    [0] => a
    [1] => f
    [2] => x
    )

    [6] => Array
    (
    [0] => a
    [1] => f
    [2] => y
    )

    [7] => Array
    (
    [0] => a
    [1] => f
    [2] => z
    )

    [8] => Array
    (
    [0] => a
    [1] => g
    [2] => w
    )

    [9] => Array
    (
    [0] => a
    [1] => g
    [2] => x
    )

    [10] => Array
    (
    [0] => a
    [1] => g
    [2] => y
    )

    [11] => Array
    (
    [0] => a
    [1] => g
    [2] => z
    )

    [12] => Array
    (
    [0] => b
    [1] => e
    [2] => w
    )

    [13] => Array
    (
    [0] => b
    [1] => e
    [2] => x
    )

    [14] => Array
    (
    [0] => b
    [1] => e
    [2] => y
    )

    [15] => Array
    (
    [0] => b
    [1] => e
    [2] => z
    )

    [16] => Array
    (
    [0] => b
    [1] => f
    [2] => w
    )

    [17] => Array
    (
    [0] => b
    [1] => f
    [2] => x
    )

    [18] => Array
    (
    [0] => b
    [1] => f
    [2] => y
    )

    [19] => Array
    (
    [0] => b
    [1] => f
    [2] => z
    )

    [20] => Array
    (
    [0] => b
    [1] => g
    [2] => w
    )

    [21] => Array
    (
    [0] => b
    [1] => g
    [2] => x
    )

    [22] => Array
    (
    [0] => b
    [1] => g
    [2] => y
    )

    [23] => Array
    (
    [0] => b
    [1] => g
    [2] => z
    )
    )
  5. Dimas Begunoff revised this gist Aug 5, 2011. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion combos.php
    Original file line number Diff line number Diff line change
    @@ -23,7 +23,7 @@ function combos($data, $all = array(), $group = array(), $val = null, $i = 0)
    $data = array
    (
    array('a', 'b'),
    array('a', 'b', 'c'),
    array('e', 'f', 'g'),
    array('w', 'x', 'y', 'z'),
    );

  6. Dimas Begunoff revised this gist Aug 4, 2011. 1 changed file with 7 additions and 7 deletions.
    14 changes: 7 additions & 7 deletions combos.php
    Original file line number Diff line number Diff line change
    @@ -1,10 +1,3 @@
    $data = array
    (
    array('a', 'b'),
    array('a', 'b', 'c'),
    array('w', 'x', 'y', 'z'),
    );

    function combos($data, $all = array(), $group = array(), $val = null, $i = 0)
    {
    if (isset($val))
    @@ -27,6 +20,13 @@ function combos($data, $all = array(), $group = array(), $val = null, $i = 0)
    return $all;
    }

    $data = array
    (
    array('a', 'b'),
    array('a', 'b', 'c'),
    array('w', 'x', 'y', 'z'),
    );

    $combos = combos($data);

    print_r($combos);
  7. Dimas Begunoff renamed this gist Aug 4, 2011. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  8. Dimas Begunoff revised this gist Aug 4, 2011. 1 changed file with 1 addition and 3 deletions.
    4 changes: 1 addition & 3 deletions recursive.php
    Original file line number Diff line number Diff line change
    @@ -29,6 +29,4 @@ function combos($data, $all = array(), $group = array(), $val = null, $i = 0)

    $combos = combos($data);

    print_r($combos);

    exit;
    print_r($combos);
  9. Dimas Begunoff created this gist Aug 4, 2011.
    34 changes: 34 additions & 0 deletions recursive.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,34 @@
    $data = array
    (
    array('a', 'b'),
    array('a', 'b', 'c'),
    array('w', 'x', 'y', 'z'),
    );

    function combos($data, $all = array(), $group = array(), $val = null, $i = 0)
    {
    if (isset($val))
    {
    array_push($group, $val);
    }

    if ($i >= count($data))
    {
    array_push($all, $group);
    }
    else
    {
    foreach ($data[$i] as $v)
    {
    combos($data, &$all, $group, $v, $i + 1);
    }
    }

    return $all;
    }

    $combos = combos($data);

    print_r($combos);

    exit;