Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Porównanie dwóch tablic, Pomoc w napisaniu funkcji porównującej dwie tablice
arzach
post
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Witam mam taki kod
  1. $aktualna_kolejka[] = array('druzyna_name' => 'Polonia Warszawa');
  2. $aktualna_kolejka[] = array('druzyna_name' => 'Jagiellonia Bialystok');
  3. $aktualna_kolejka[] = array('druzyna_name' => 'GKS Belchatow');
  4. $aktualna_kolejka[] = array('druzyna_name' => 'Wisla Krakow');
  5.  
  6.  
  7. $poprzednia_kolejka[] = array('druzyna_name' => 'Polonia Warszawa');
  8. $poprzednia_kolejka[] = array('druzyna_name' => 'Jagiellonia Bialystok');
  9. $poprzednia_kolejka[] = array('druzyna_name' => 'Wisla Krakow');
  10. $poprzednia_kolejka[] = array('druzyna_name' => 'GKS Belchatow');
  11.  
  12.  
  13. function comparison_array(array $array, $druzyna_name){
  14.  
  15. foreach($array as $key => $value){
  16. if($druzyna_name == $value['druzyna_name']){
  17.  
  18. return 'bez zmian';
  19.  
  20. } elseif($druzyna_name > $value['druzyna_name']){
  21. return 'awans';
  22. } else {
  23. return 'spadek';
  24. }
  25. }
  26.  
  27. }
  28.  
  29.  
  30. // wyświetlanie wyników
  31. foreach($aktualna_kolejka AS $value){
  32. echo comparison_array($poprzednia_kolejka, $value['druzyna_name'])." | ".$value['druzyna_name'].'</br>';
  33. // bez zmian | Polonia Warszawa
  34. // bez zmian | Jagiellonia Bialystok
  35. // awans | GKS Belchatow
  36. // spadek | Wisla Krakow
  37. }


Oczywiście kod ten nie działa i potrzebuje pomoc w napisaniu funkcji która porówna $aktualna_kolejka z tablicą $poprzednia_kolejka tak by funkcja zwracała

- bez zmian gdy drużyna w tablicy $aktualna_kolejka jest na tej same pozycji co w $poprzednia_kolejka
- awans gdy drużyna w tablicy $aktualna_kolejka jest wyżej niż w tablicy $poprzednia_kolejka
- spadek gdy drużyna w tablicy $aktualna_kolejka jest niżej niż w tablicy $poprzednia_kolejka

Proszę o pomoc w napisaniu tego w jak najprostszy sposób. Sprawa się komplikuje dla mnie ponieważ klucze w tablicach są indeksowane numerycznie zamiast nazwy drużyn.

Ten post edytował arzach 30.07.2011, 20:23:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lobopol
post
Post #2





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Mógłbyś nie kantować? Przed chwilą sprawdziłem kod działa najpierw dokładnie przepisz i pomyśl
  1. $aktualna_kolejka[] = 'Polonia Warszawa';
  2. $aktualna_kolejka[] = 'Jagiellonia Bialystok';
  3. $aktualna_kolejka[] = 'GKS Belchatow';
  4. $aktualna_kolejka[] = 'Wisla Krakow';
  5.  
  6. $stara_kolejka[] = 'Polonia Warszawa';
  7. $stara_kolejka[] = 'Jagiellonia Bialystok';
  8. $stara_kolejka[] = 'Wisla Krakow';
  9. $stara_kolejka[] = 'GKS Belchatow';
  10.  
  11. function comparison_array($array_new, $array_old, $druzyna_name){
  12. $position_old = array_search ( $druzyna_name , $array_old);
  13. $position_new = array_search ( $druzyna_name , $array_new);
  14. if($position_new == $position_old){
  15. return 'same';
  16. }elseif($position_new > $position_old){
  17. return 'up';
  18. }else{
  19. return 'down';
  20. }
  21. }
  22.  
  23. foreach($aktualna_kolejka as $value){
  24. echo comparison_array($aktualna_kolejka, $stara_kolejka, $value)." | ".$value.'<br/>';
  25. }


Wynik:
same | Polonia Warszawa
same | Jagiellonia Bialystok
down | GKS Belchatow
up | Wisla Krakow

Ten post edytował lobopol 30.07.2011, 21:18:55
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 00:06