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
arzach
post
Post #2





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

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


Przecież napisałem że nie mogę tablic zmieniać i że muszę mieć taką tablice

  1. $aktualna_kolejka[] = array('druzyna_name' => 'Polonia Warszawa', 'punkty' => 9);
  2. $aktualna_kolejka[] = array('druzyna_name' => 'Jagiellonia Bialystok', 'punkty' => 9);
  3. $aktualna_kolejka[] = array('druzyna_name' => 'GKS Belchatow', 'punkty' => 7);
  4. $aktualna_kolejka[] = array('druzyna_name' => 'Wisla Krakow', 'punkty' => 5);


Ale udało mi się i rozwiązałem to tak

  1. function comparison_array($poprzednia_kolejka, $druzyna_name, $key_druzyna){
  2. foreach($poprzednia_kolejka AS $key => $value){
  3. if($value['druzyna_name'] == $druzyna_name){
  4.  
  5. if($key == $key_druzyna){
  6. return 'bez zmian';
  7. } elseif($key > $key_druzyna){
  8. return 'spadek';
  9. } else {
  10. return 'awans';
  11. }
  12.  
  13. }
  14. }
  15. }
  16.  
  17. foreach($aktualna_kolejka AS $key => $value){
  18. echo comparison_array($poprzednia_kolejka, $value['druzyna_name'], $key).'</br>';
  19. }


Nie wiem czy da się prościej ale działa.
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: 14.10.2025 - 23:18