Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pliki - każdy rekord z każdym rekordem
Forum PHP.pl > Forum > Przedszkole
d0m1n1k_
Witam,

mam do dyspozycji pliki A.txt, B.txt, C.txt, D.txt
w nich zawarte są słowa i znaki, pliki są dość .
chciałbym napisać pętlę która robiłaby następującą czynność:

1. Połączy każdy wiersz pliku A z każdymi wierszem pliku B. (lub połączenia C z D, C z B, C z A, D z A, B z D)
2. Połączy każdy wiersz pliku A z każdymi wierszem pliku B i z każdymi wierszem pliku C (lub A z C z D, B z C z D, A z B z D)
3. Połączy każdy wiersz pliku A z każdymi wierszem pliku B i z każdymi wierszem pliku C oraz z każdym wierszem pliku D.

Nie do końca wiem jak za to się wziąć.
Na chwilę obecną opanowałem obsługę dwóch plików w pętli foreach.

  1. $plikA = file('A.txt');
  2. $plikB = file('B.txt');
  3. $plikC = file('C.txt');
  4. $plikD = file('D.txt');
  5.  
  6. foreach($plikD as $d)
  7. {
  8. $i++;
  9. list($wD) = explode('\n', trim($d));
  10.  
  11. foreach($plikA as $a)
  12. {
  13. $j++;
  14. list($wA) = explode('\n', trim($a));
  15. echo "<a href=\"" . "$wD" . "\">" . "$wA" . "</a>" . "<br />";
  16. }
  17.  
  18. foreach($plikB as $b)
  19. {
  20. $j++;
  21. list($wB) = explode('\n', trim($b));
  22. echo "<a href=\"" . "$wD" . "\">" . "$wB" . "</a>" . "<br />";
  23. }
  24.  
  25. foreach($plikC as $c)
  26. {
  27. $j++;
  28. list($wC) = explode('\n', trim($c));
  29. echo "<a href=\"" . "$wD" . "\">" . "$wC" . "</a>" . "<br />";
  30. }
  31. }


To oczywiście działa, ale co zrobić dalej?
Bardzo dziękuję za każdą pomoc.
fate
  1. $polaczLinieAzLinieB=$plikA[$i].$plikB[$i];
d0m1n1k_
Jeśli dobrze to wprowadziłem, to chyba nie o ten efekt mi chodzi.
Pliki mają różną ilość wierszy, więc jest sporo pojedynczych linijek (np. tylko z pliku A)

  1. foreach($plikB as $b)
  2. {
  3. $i++;
  4. $A = $plikA[$i];
  5. $B = $plikB[$i];
  6. echo "<a href=\"" . "$A" . "\">" . "$B" . "<a/><br />";
  7.  
  8. }
nospor
Nie bardzo rozumiem co chcesz zrobic tym:
list($wD) = explode('\n', trim($d));


Przeciez $d to just jest linia co szukales, wiec po grrzyba to jeszcze nieumiejetnie explodujesz? Przeciez to juz niczemu nie sluzy

Cytat
. Połączy każdy wiersz pliku A z każdymi wierszem pliku B.

  1. foreach($plikA as $a)
  2. {
  3. foreach($plikB as $b) {
  4. echo $a.$b.'<br />'
  5. }
  6. }

I juz
d0m1n1k_
Czyli dla każdej kombinacji mam przygotować podwójne zapętlenie?
czyli przy większej liczbie plików i kombinacji np:
Plika A,B,C...G,


  1. foreach (A){
  2. foreach(B){}
  3. foreach(C){}
  4. foreach(D){}
  5. foreach(E){}
  6. foreach(F){}
  7. foreach(G){}
  8. }
  9. foreach (B){
  10. foreach(A){}
  11. foreach(C){}
  12. foreach(D){}
  13. foreach(E){}
  14. foreach(F){}
  15. foreach(G){}
  16. }
  17. .
  18. .
  19. .
  20. foreach (G){
  21. foreach(A){}
  22. foreach(B){}
  23. foreach(C){}
  24. foreach(D){}
  25. foreach(E){}
  26. foreach(F){}
  27. }


Niema czegoś co zmniejszyło by mi męki Ctrl+C Ctrl+V i podmiany literek ?
Szczególnie, że chciałbym w późniejszym czasie jeszcze połączyć każdy wiersz z trzech plików ( $fileA['$i'] . $fileB['$j'] . $fileC['$k'] )
(A1, A2, B1, B2, C1, C2)
-->
(
A1B1 B1A1
A2B1 B1A2
A1B1C1 B1C1A1 C1A1B1 C1B1A1 B1A1C1
A2B1C1 B1C1A2 C1A2B1 C1B1A2 B1A2C1
....)
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.