Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Porównanie dwóch tablic wielowymiarowych i tworzenie trzeciej
Forum PHP.pl > Forum > Przedszkole
ralothhardica
Mam dwie tablice wielowymiarowe:
  1. $tab1 = array (1=>
  2. array(1=>'Paweł','666666666'),
  3. array(1=>'Anna','88888888'),
  4. array(1=>'Adam','555555555'),
  5. array(1=>'Ola','777777777')
  6. );
  7. $tab2 = array (1=>
  8. array(1=>'555555555','Nowak'),
  9. array(1=>'88888888','Nazwisko'),
  10. array(1=>'666666666','Bbbbbbb'),
  11. array(1=>'777777777','AAaaaaa')
  12. );


Potrzebuje je porównać numery telefonów (555555555,666666666,.....) i otrzymać trzecią tablice
  1. $tab3 = array (1=>
  2. array(1=>'Adam','Nowak','555555555'),
  3. array(1=>'Anna','Nazwisko','88888888'),
  4. array(1=>'Paweł','Bbbbbbb','666666666'),
  5. array(1=>'Ola','AAaaaaa','777777777'),

Ma ktoś jakieś pomysły?
bastard13
A jakie masz Ty? I co w nich nie działa?
ralothhardica
Próbowałem
  1. array_intersect($tab1, $tab2);

ale zwraca tylko elementy elementy $tab1 które znajdują się w $tab2. Nie wiem jak to zrobić żebym dostawał przy którym indeksie jest taki sam rekord.
Shido
Jak fan nieoptymalnych rozwiązań, proponuje wrzucić jedną tablicą w pętle i w tej pętli wywołać pętle z drugą tablicą i w tej drugiej pętli zrobic porównanie typu:
  1. if($tab1[$x][1] == $tab2[$y][0])
  2. {
  3. //i tu tworzenie 3 tablicy
  4. }
ralothhardica
Napisałem taką pętle:
  1. for ($i=1; $i<=count($tab1);$i++){
  2. for($j=1;$j<=count($tab1);$j++){
  3. if($tab1[$i][2] == $tab2[$j][1]){
  4. $tab3[$i][1] = $tab1[$i][1];
  5. $tab3[$i][2] = $tab1[$i][2];
  6. $tab3[$i][3] = $tab2[$j][1];
  7. $tab3[$i][4] = $tab2[$j][2];
  8. }
  9. }
  10. }

Wszystko ok, tylko przy kilku tysiącach rekordów trochę czasu to zajmuje.
Shido
Tak jak napisałem, działac będzie działał, ale nieoptymalne, chociaż nie wiem czy w ogóle jest jakis inny sposób (pewnie ktos wpadnie i pokaże że jednak jest smile.gif ).
ralothhardica
Ok dzięki. Na razie musi mi to wystarczyć. Może ktoś będzie miał jakiś inny pomysł smile.gif
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.