Re: Too many arrays! My head is exploding!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Le 29/05/2012 14:45, Gary a écrit :
Okay, let's assume I have three "things", A, B, and C. I need to produce
an array with a list of all possible combinations of them, however many
there might be in those combinations: e.g. A, B, C, D, AB, AC, AD, BC,
ABC (not sure if I've missed any!). Normally I'm pretty good at working
this stuff out, but to be honest I'm struggling with this one, at least
to do it in any kind of elegant way. Does anyone have any ideas?

Idealy what I'd like is a multidimensional array depending on the number
of "things" in the combination. Something like:
array(2) {
   [0]=>
   array(3) {
     [0]=>
     array(1) {
       ["name"]=>
       string(7) "A"
     }
     [1]=>
     array(2) {
       ["name"]=>
       string(5) "B"
     }
     [2]=>
     array(2) {
       ["name"]=>
       string(4) "C"
     }
   }
   [1]=>
   array(...) {
     [0]=>
     array(2) {
       ["name"]=>
       string(13) "A+B"
     }
     [1]=>
     array(2) {
       ["name"]=>
       string(12) "A+C"
     }
(etc.)


--
Gary        Please do NOT send me 'courtesy' replies off-list.



Enjoy !

function combinations($letters) {
    $combinations = array(array());
    foreach ($letters as $letter) {
      foreach ($combinations as $combination) {
        $combinations[] = array_merge($combination, array($letter));
      }
    }
    return $combinations;
}
print"<pre>";print_r(combinations(array('a','b','c')));print"</pre>";

outputs :

Array
(
    [0] =>  Array
        (
        )

    [1] =>  Array
        (
            [0] =>  a
        )

    [2] =>  Array
        (
            [0] =>  b
        )

    [3] =>  Array
        (
            [0] =>  a
            [1] =>  b
        )

    [4] =>  Array
        (
            [0] =>  c
        )

    [5] =>  Array
        (
            [0] =>  a
            [1] =>  c
        )

    [6] =>  Array
        (
            [0] =>  b
            [1] =>  c
        )

    [7] =>  Array
        (
            [0] =>  a
            [1] =>  b
            [2] =>  c
        )

)

--

Florian Lemaitre
Développeur Web -- Cellule Edition Web/Publishing
Ligne directe : +32 69 250 554

Nos sites :
www.Potoroze.com <http://www.Potoroze.com> le portail de shopping mode et beauté www.Flash-Promos.com <http://www.Flash-Promos.com> le portail des codes promos _www.LaFriperieduCoin.com <http://www.LaFriperieduCoin.com>_ le spécialiste des petites annonces mode gratuites

/Pôle Digital//, Evolution S.A/
12 rue des sablières, ZI Tournai Ouest II, 7503 Froyennes - BELGIQUE
Fax: +32 69 221 122
www.evolutioncom.eu <http://www.evolutioncom.eu>


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux