Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wszystkie kombinacje elementów tablicy bez powtórzeń z dowolną liczbą elementów
Forum PHP.pl > Forum > Przedszkole
adi456
doszedłem do 4 elementów, jeżeli mam dopisywać ich więcej to będzie chore, podejrzewam że można to jakoś uprościć, kod działa w 100% prawidłowo

  1. $model='1 2 3 4';
  2.  
  3. $model_tabl = str_replace('-', ' ', $model);
  4. $model_tabl = explode(" ", $model_tabl);
  5.  
  6. $ile=count($model_tabl);
  7.  
  8. for( $x = 0; $x < $ile; $x++ ) {
  9. for( $x1 = 0; $x1 < $ile; $x1++ ) {
  10. if(empty($model_tabl[2])) {
  11. if ($model_tabl[$x]!=$model_tabl[$x1]){
  12. echo $model_tabl[$x].' '.$model_tabl[$x1].'<br>';
  13. };
  14. }
  15. else {
  16. for( $x2 = 0; $x2 < $ile; $x2++ ) {
  17. if(empty($model_tabl[3])) {
  18. if ($model_tabl[$x]!=$model_tabl[$x1] && $model_tabl[$x1]!=$model_tabl[$x2] && $model_tabl[$x]!=$model_tabl[$x2]){
  19. echo $model_tabl[$x].' '.$model_tabl[$x1].' '.$model_tabl[$x2].'<br>';
  20. };
  21. } else {
  22. for( $x3 = 0; $x3 < $ile; $x3++ ) {
  23. if(empty($model_tabl[4])) {
  24. if ($model_tabl[$x]!=$model_tabl[$x1] && $model_tabl[$x1]!=$model_tabl[$x2] && $model_tabl[$x]!=$model_tabl[$x2] && $model_tabl[$x]!=$model_tabl[$x3] && $model_tabl[$x1]!=$model_tabl[$x3] && $model_tabl[$x2]!=$model_tabl[$x3]){
  25. echo $model_tabl[$x].' '.$model_tabl[$x1].' '.$model_tabl[$x2].' '.$model_tabl[$x3].'<br>';
  26. };
  27. } else {
  28. }
  29. }
  30. }
  31. }
  32. }
  33.  
  34. }
  35. }
redeemer
http://docstore.mik.ua/orelly/webprog/pcook/ch04_26.htm funkcja pc_permute
adi456
rany redeemer dzięki wielkie, dużo czasu mi zaoszczędziłeś, dzięki jeszcze raz
redeemer
Radzę przeczytać całą "recepturę" smile.gif
adi456
nie moge sobie poradzić z tym skryptem

chce z niego wyciągnąć dane na zewnątrz w taki oto sposób

  1. $model='1 2 3 4';
  2. function pc_permute($items, $perms = array( )) {
  3. if (empty($items)) {
  4. $okis[]=join(' ', $perms);
  5.  
  6. } else {
  7. for ($i = count($items) - 1; $i >= 0; --$i) {
  8. $newitems = $items;
  9. $newperms = $perms;
  10. list($foo) = array_splice($newitems, $i, 1);
  11. array_unshift($newperms, $foo);
  12. pc_permute($newitems, $newperms);
  13. }
  14. }
  15. }
  16. pc_permute(split(' ', $model));
  17. print_r($okis);


i zmienna $okis jest pusta, i nie wiem zabradzo jak wyciągnąć z tego dane, chyba najprosciej jest to w sesje zapisywac ale czy to nie jest troche głupie?

każda funkcja nie wypuszcza z siebie zmiennych?


p.s. he przepraszam o global zapomniałem:P
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.