Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> array_udiff, zla zwracana wartosc
abusiek
post 17.02.2008, 15:26:02
Post #1





Grupa: Zarejestrowani
Postów: 89
Pomógł: 5
Dołączył: 23.10.2006
Skąd: Gda?sk

Ostrzeżenie: (0%)
-----


Ogolnie problem wyglada tak
Mam dwie tablice:
1. prevPoints:
  1. <?php
  2. (
  3. [0] => Array
  4. (
  5. [old] => 8225
  6. [new] => 6593
  7. )
  8.  
  9. [1] => Array
  10. (
  11. [old] => 8348
  12. [new] => 6621
  13. )
  14.  
  15. [2] => Array
  16. (
  17. [old] => 6854
  18. [new] => 4820
  19. )
  20.  
  21. [3] => Array
  22. (
  23. [old] => 6859
  24. [new] => 2591
  25. )
  26.  
  27. [4] => Array
  28. (
  29. [old] => 8509
  30. [new] => 11451
  31. )
  32.  
  33. [5] => Array
  34. (
  35. [old] => 6877
  36. [new] => 6613
  37. )
  38.  
  39. [6] => Array
  40. (
  41. [old] => 8476
  42. [new] => 6421
  43. )
  44. }
  45. ?>


2. aPoints:

  1. <?php
  2. (
  3. [1] => Array
  4. (
  5. [old] => 8348
  6. [new] => 6621
  7. )
  8.  
  9. [3] => Array
  10. (
  11. [old] => 6859
  12. [new] => 2591
  13. )
  14.  
  15. [4] => Array
  16. (
  17. [old] => 8509
  18. [new] => 11451
  19. )
  20.  
  21. [5] => Array
  22. (
  23. [old] => 6877
  24. [new] => 6613
  25. )
  26.  
  27. [6] => Array
  28. (
  29. [old] => 8476
  30. [new] => 6421
  31. )
  32.  
  33. )
  34. ?>


oraz funkcje porownujaca:

  1. <?php
  2. function compareRemove($a1, $a2)
  3. {
  4. if($a1['old'] == $a2['old'])
  5. return 0;
  6.  
  7. if($a1['old'] != $a2['old'])
  8. return -1;
  9. }
  10. ?>


po wykonaniu:

  1. <?php
  2. array_udiff($prevPoints, $aPoints, "compareRemove");
  3. ?>


dostaje taka tablice:

  1. <?php
  2. (
  3. [0] => Array
  4. (
  5. [old] => 8225
  6. [new] => 6593
  7. )
  8.  
  9. [1] => Array
  10. (
  11. [old] => 8348
  12. [new] => 6621
  13. )
  14.  
  15. [2] => Array
  16. (
  17. [old] => 6854
  18. [new] => 4820
  19. )
  20.  
  21. [3] => Array
  22. (
  23. [old] => 6859
  24. [new] => 2591
  25. )
  26.  
  27. [4] => Array
  28. (
  29. [old] => 8509
  30. [new] => 11451
  31. )
  32.  
  33. [5] => Array
  34. (
  35. [old] => 6877
  36. [new] => 6613
  37. )
  38.  
  39. )
  40. ?>


Co jest ewidentnie zle, bo wg. mnie funkcja powinna zwrocic tablice:

  1. <?php
  2. [0] => Array
  3. (
  4. [old] => 8225
  5. [new] => 6593
  6. )
  7. [2] => Array
  8. (
  9. [old] => 6854
  10. [new] => 4820
  11. )
  12. )
  13. ?>


czyli te 'podtablice', ktore sa w $prevPoints i nie ma ich w $aPoints.
Mam jakis blad??
Go to the top of the page
+Quote Post
Kowalikus
post 17.02.2008, 15:55:14
Post #2





Grupa: Zarejestrowani
Postów: 111
Pomógł: 25
Dołączył: 23.07.2004

Ostrzeżenie: (0%)
-----


  1. <?php
  2. function compareRemove($a1, $a2)
  3. {
  4. return $a1['old'] - $a2['old'];
  5. }
  6. ?>


powinno zadziałać


--------------------
Go to the top of the page
+Quote Post
abusiek
post 17.02.2008, 15:59:01
Post #3





Grupa: Zarejestrowani
Postów: 89
Pomógł: 5
Dołączył: 23.10.2006
Skąd: Gda?sk

Ostrzeżenie: (0%)
-----


Rzeczywiscie zadzialalo, tylko pytanie czemu nie zadzialala poprzednia funkcja?? Przeciez zawsze zwraca odpowiednia wartosc (0 lub -1) i powinna dobrze dzialac z array_udiff, czy sie myle?

PS. nie wiem czy to prawda ale wyglada na to ze funkcja uzyta do porownania musi 'miec mozliwosc' zwrocenia wszystkich trzech wartosci (0, 1, -1)

Ten post edytował abusiek 17.02.2008, 16:16:06
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:32