Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> kombinacje zestawów wartości tablicy
yoyo
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 20.12.2003
Skąd: Bielsko-Biała

Ostrzeżenie: (0%)
-----


[php:1:585bb24194]
<?php
$koszulka = array
(
'kolor' => array
(
0 => 'Zielony',
1 => 'Czerwony',
2 => 'Żółty'
),
'rozmiar' => array
(
0 => 'S',
2 => 'M',
6 => 'L'
),
'typ' => array
(
3 => 'Męska',
9 => 'Damska'
)
);
?>
[/php:1:585bb24194]

w jaki sposób wybrać wszystkie kombinacje, tak aby uzyskać:
Zielony, S, Męska
Zielony, S, Damska
Zielony, M, Męska
Zielony, M, Damska
Zielony, L, Męska
Zielony, L, Damska
Czerwony, S, Męska
Czerwony, S, Damska
Czerwony, M, Męska
...
itd itd

oczywiście chodzi mi o funkcję która rekursywnie będzie tworzyła kombinację bez względu na ilość cech i wartości cech. Zauważcie, że klucze tablic z wartościami są dowolne, nie są po kolei.
dziękuję z góry za wszelką pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
hawk
post
Post #2





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

Ostrzeżenie: (0%)
-----


Algorytm:
[php:1:6505ac8e15]<?php

$koszulka = array
(
'kolor' => array
(
0 => 'Zielony',
1 => 'Czerwony',
2 => 'Żółty'
),
'rozmiar' => array
(
0 => 'S',
2 => 'M',
6 => 'L'
),
'typ' => array
(
3 => 'Męska',
9 => 'Damska'
)
);

$keys = array_keys($koszulka);
$values = array();
foreach ($koszulka as $val) {
$values[] = array_values($val);
}

$numTypes = count($keys);

$numTotal = 1;
$switch = array(0 => 1);
$result = array();

for ($i=0; $i<$numTypes; $i++) {
$tmp = count($values[$i]);
$switch[$i+1] = $switch[$i] * $tmp;
$numTotal *= $tmp;
}

for ($i=0; $i<$numTotal; $i++) {
for ($j=0; $j<$numTypes; $j++) {
$result[$j] = $values[$j][floor($i / $switch[$j]) % count($values[$j])];
}
echo implode(', ', $result) . "<br>n";
}
?>[/php:1:6505ac8e15]
Wynik:
Kod
Zielony, S, Męska

Czerwony, S, Męska

Żółty, S, Męska

Zielony, M, Męska

Czerwony, M, Męska

Żółty, M, Męska

Zielony, L, Męska

Czerwony, L, Męska

Żółty, L, Męska

Zielony, S, Damska

Czerwony, S, Damska

Żółty, S, Damska

Zielony, M, Damska

Czerwony, M, Damska

Żółty, M, Damska

Zielony, L, Damska

Czerwony, L, Damska

Żółty, L, Damska

:wink:
Go to the top of the page
+Quote Post

Posty w temacie
- yoyo   kombinacje zestawów wartości tablicy   7.06.2004, 11:07:06
- - kszychu   <?php foreach( $koszulka['kolor'] as $kolor...   7.06.2004, 11:14:48
- - yoyo   Re: kombinacje zestawów wartości tablicy   7.06.2004, 11:46:35
- - kszychu   ups.... sorry, nie doczytałem.   7.06.2004, 11:51:48
- - yoyo   no hope?   8.06.2004, 12:12:19
- - hawk   Algorytm: <?php $koszulka = array ( 'kolor' ...   8.06.2004, 13:29:24
- - yoyo   śliczne dzięki   8.06.2004, 17:32:11


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 21:14