Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Porównywanie tablic
Forum PHP.pl > Forum > Przedszkole
bolus150
Witam, zmagam się już któryś dzień z porównywaniem tablic. Byłby ktoś tak wspaniały i powiedział w którą stronę mam zmierzać?
Otóż mam takie 2 tabele
  1. (
  2. [0] => 48
  3. [1] => 47
  4. [2] => 46
  5. [3] => 44
  6. [4] => 43
  7. [5] => 42
  8. [6] => 39
  9. [7] => 38
  10. [8] => 37
  11. [9] => 36
  12. [10] => 35
  13. [11] => 34
  14. [12] => 33
  15. )
  16. (
  17. [0] => 2
  18.  
  19. [1] => 48
  20.  
  21. [2] => 47
  22.  
  23. [3] => 46
  24.  
  25. [4] => 44
  26.  
  27. [5] => 43
  28.  
  29. [6] => 38
  30.  
  31. [7] => 39
  32.  
  33. [8] => 42
  34.  
  35. [9] => 37
  36.  
  37. [10] => 36
  38.  
  39. [11] => 35
  40.  
  41. [12] => 34
  42.  
  43. [13] => 33
  44.  
  45. [14] => 32
  46.  
  47. )


Główna zasada tego będzie polegała na tym, że jeżeli znajdzie np, 33 w obu tablicach to nic nie robi, jak np nie znajdzie to wypisuje to. Ktoś jakiś pomysł?
trueblue
array_diff a potem badanie wyniku.
Ewentualnie in_array dla każdej tablicy.
nospor
  1. if (!in_array(33, $ar1) || !in_array(33, $ar2)) {
  2. echo 'Blabla';
  3. }
bolus150
A dałoby radę w jakiś bezbolesny sposób zrobić z takiej tablicy na taka $array1 = array(48, 47, 25, 44, 43, 42, 39, 38, 37, 36, 35, 34, 24); ?
nospor
Zacznij prosze uzywac troszke manuala
http://php.net/manual/en/function.array-intersect.php
bolus150
Chodziło czy da radę przekonwertować z:

  1. (
  2. [0] => 2
  3. [1] => 48
  4. [2] => 47
  5. [3] => 46
  6. [4] => 44
  7. [5] => 43
  8. [6] => 38
  9. [7] => 39
  10. [8] => 42
  11. [9] => 37
  12. [10] => 36
  13. [11] => 35
  14. [12] => 34
  15. [13] => 33
  16. [14] => 32
  17. )


na:
  1. array(2, 48, 47, 46, 44, 43, 38, 39, 42, 37, 36, 35, 34, 33, 24);
kapslokk
A skąd Ci sie to 24 wzięło?

Edit: @nospor - też tak napisałem na początku, ale 24 na końcu jest biggrin.gif
nospor
Przeciez to to samo...
bolus150
W takim razie coś jest nie tak, bo jak podaje do array_diff() drugim sposobem to wszystko pięknie działa. Jak pierwszy to wywala błąd Illegal offset type
nospor
A moze pokaz nam kod, jeden ktory dziala i jeden ktory nie dziala
bolus150
Tak mam i nie działa:
Błąd: Warning: Illegal offset type on line 206 - błąd dla każdego indexu
  1. $array1 = array
  2. (
  3. [1] => 48,
  4. [2] => 47,
  5. [3] => 25,
  6. [4] => 44,
  7. [5] => 43,
  8. [6] => 42,
  9. [7] => 39,
  10. [8] => 38,
  11. [9] => 37,
  12. [10] => 36
  13. );
  14. $array2 = array
  15. (
  16. [0] => 48,
  17. [1] => 47,
  18. [2] => 46,
  19. [3] => 44,
  20. [4] => 43,
  21. [5] => 42,
  22. [6] => 39,
  23. [7] => 38,
  24. [8] => 37,
  25. [9] => 3,
  26. [10] => 35,
  27. [11] => 34,
  28. [12] => 33
  29. );
  30. print_r(array_diff($array1, $array2));
  31.  


a jak tak podaje

  1. $array1 = array(48, 47, 44, 43, 42, 39, 38, 37, 36);
  2. $array2 = array(48, 47, 46, 44, 43, 42, 39, 38, 37, 3, 35, 34, 33);
  3.  
  4. print_r( array_diff($array1, $array2));


to wyświetla mi dobrze bo w array1 jest tylko 36 inne
nospor
Nie
array
(
[1] => 48,

a
array(
1 => 48,
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.