# RE: [PHP] Generate every possible combination

```Here's the function I use:

// array array_permute(array [, string])
//
// Returns an array containing the permutations of the values in an array.
//
// Example:
// \$a = array(1, 2, 3);
// \$p = array_permute(\$a)
//
// Result:
// p[0] = '1,2,3'
// p[1] = '1,3,2'
// p[2] = '2,1,3'
// p[3] = '2,3,1'
// p[4] = '3,2,1'
// p[5] = '3,1,2'
//
function array_permute(&\$a, \$glue = ',')
{
\$retval = array();
array_permute_internal(\$a, \$glue, \$retval, 0, count(\$a));
return \$retval;
}```
```
// Private function used by array_permute.
function array_permute_internal(&\$a, \$glue, &\$retval, \$depth, \$ubound)
{
if (\$ubound > 0)
{
for (\$i=0; \$i < \$ubound; \$i++)
{
\$c = \$a[\$depth+\$i];
\$a[\$depth+\$i] = \$a[\$depth];
\$a[\$depth] = \$c;
array_permute_internal(\$a, \$glue, \$retval, \$depth+1,
\$ubound-1);
\$c = \$a[\$depth+\$i];
\$a[\$depth+\$i] = \$a[\$depth];
\$a[\$depth] = \$c;
}
}
else
{
\$retval[] = implode(\$glue, \$a);
}
}

-----Original Message-----
From: Evan Nemerson [mailto:[EMAIL PROTECTED]]
Sent: Thursday, May 16, 2002 12:17 AM
To: [EMAIL PROTECTED]
Subject: [PHP] Generate every possible combination

I need to generate every possible combination of the the values in an array.
For example, if...

\$array = Array("A", "B", "C");

I want to be able to do something like

print_r(magic_function(\$array));

which would output

Array
(
[0] => "ABC"
[1] => "ACB"
[2] => "BAC"
[3] => "BCA"
[4] => "CAB"
[5] => "CBA"
)

I really have no idea where to begin. The best lead I can think of is that
there are going to be n! elements in the output array, where n is the size
of
the input array.

Any help would be greatly appreciated.

Evan

--
Think not those faithful who praise all thy words and actions, but those who
kindly reprove thy faults.

Socrates

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

```