Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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
kszychu
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


[php:1:d9e725b6b7]<?php
foreach( $koszulka['kolor'] as $kolor ) {
foreach( $koszulka['rozmiar'] as $rozmiar ) {
foreach( $koszulka['typ'] as $typ ) {
echo $kolor.", ".$rozmiar.", ".$typ."n";
}
}
}
?>[/php:1:d9e725b6b7]

Nie testowałem...
Go to the top of the page
+Quote Post
yoyo
post
Post #3





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

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


kszychu:
Cytat
oczywiście chodzi mi o funkcję która rekursywnie będzie tworzyła kombinację bez względu na ilość cech i wartości cech.
Go to the top of the page
+Quote Post
kszychu
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


ups.... sorry, nie doczytałem.
Go to the top of the page
+Quote Post
yoyo
post
Post #5





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

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


no hope?
Go to the top of the page
+Quote Post
hawk
post
Post #6





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
yoyo
post
Post #7





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

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


śliczne dzięki
Go to the top of the page
+Quote Post

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: 24.12.2025 - 17:17