Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kombinacje z niewiadomej ilości tablic
Forum PHP.pl > Forum > PHP
mirvanos
Witam
Jest taka dynamiczna tablica, a w niej dynamicznie dodawane dane :
  1. $tabs = array();
  2. $tabs[] = array('a','b','c');
  3. $tabs[] = array('d','e');
  4. $tabs[] = array('x');

Przypominam że nie wiem na starcie nic o ilości i długości wewnętrznych tablic.
Jak wyciągnąć dane, unikalne, po jednej z każdej tabeli. Dokładnie wszystkie takie kombinacje typu :

adx
aex
bdx
bex
cdx
cex

Z góry dzięki za pomoc.
celbarowicz
stawiasz browara!


  1. <?php
  2.  
  3. $tabs = array();
  4. $tabs[] = array('a','b','c');
  5. $tabs[] = array('d','e');
  6. $tabs[] = array('x');
  7.  
  8.  
  9. $d0=$tabs[0];
  10. $d1=$tabs[1];
  11. $d2=$tabs[2];
  12. echo 'ilość tabel w tabeli tabs='; echo $n=count($tabs); echo '<br>';
  13.  
  14. echo 'ilość elementów w tabeli 0= '; echo $n0=count($tabs[0]); echo '<br>';
  15. echo 'ilość elementów w tabeli 1='; echo $n1=count($tabs[1]); echo '<br>';
  16. echo 'ilość elementów w tabeli 2='; echo $n2=count($tabs[2]); echo '<br>';
  17.  
  18. for ($i=0;$i<count($d0);$i++){
  19. for ($j=0;$j<count($d1);$j++){
  20. for ($k=0;$k<count($d2);$k++){
  21. echo $d0[$i].$d1[$j].$d2[$k];
  22.  
  23. echo '<br>';
  24.  
  25.  
  26. }
  27. }
  28. }
  29.  
  30.  
  31.  
  32. //resztę trzeba dopracować
  33. ?>
  34.  
  35.  
  36.  
  37.  
  38.  
Noidea
@celbarowicz
A jeśli elementów tablicy $tabs będzie 20, to będziesz 20 razy zagnieżdżał pętlę for?


  1. <?php
  2.  
  3. function printRecursive( $array, $index = 0, $str = '' )
  4. {
  5. if( $index < count( $array ) - 1 )
  6. {
  7. foreach( $array[$index] as $value )
  8. {
  9. printRecursive( $array, $index + 1, $str . $value );
  10. }
  11. }
  12. else
  13. {
  14. foreach( $array[$index] as $value )
  15. {
  16. echo $str;
  17. echo $value;
  18. echo "\n";
  19. }
  20. }
  21. }
  22.  
  23.  
  24. $tabs = array();
  25. $tabs[] = array( 'a', 'b', 'c' );
  26. $tabs[] = array( 'd', 'e' );
  27. $tabs[] = array( 'x' );
  28.  
  29. printRecursive( $tabs );
  30.  
  31. ?>
celbarowicz
pisałem, że resztę należy dopracować. pokazałem jak można pobrać niektóre informacje o tabeli.
mirvanos
Dzięki NoIdea, znalazłem jeszcze (fragment po przeróbce) :
  1. protected function showAllCombinations($string, $traits, $i, $limit) {
  2. if (count ( $this->_replaced ) >= $limit)
  3. return;
  4. if ($i >= count ( $traits )) {
  5. $this->_replaced [] = trim ( $string );
  6. } else {
  7. foreach ( $traits [$i] as $trait ) {
  8. $string_temp = (! empty ( $string )) ? "$string" . KEYWORD_SEPARATOR . "$trait" : "$trait";
  9. $this->showAllCombinations ( $string_temp, $traits, $i + 1, $limit );
  10. }
  11. }
  12. }


generalnie wiedziałem że funkcja ma być wywoływana wewnątrz ale głowa mnie już od tego bolała i robiłem dziwne zonki smile.gif

dzięki i pozdrawiam

ps. w sumie to prawie to samo ...
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.