Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Porównanie wartości pól tablicy
Forum PHP.pl > Forum > Przedszkole
karolusgt
Witam Serdecznie
Piszę w desperacji, bo nie dosyć że straciłem na ten problem sporo czasu, to jak znam życie rozwiązanie jeste proste. Ale do rzeczy... Wygenerowałem sobie test z losowymi pytaniami, z którego odpowidzi trafiają do tablicy $tablica1[]. Do drugiej tablicy $tablica2 wczytałem z pliku txt odpowiedzi do wszystkich pytań. Cały myk polega teraz na tym, żeby porównać, czy dale elementy tablic są identyczne czyli czy zaznaczona odpowiedź jest prawidłowa. Niby banalne... Dla uproszczenia zakładamy że tablice mają po 10 elementów; Oto jak wyglądały moje tablice po wyświetleniu:
$tablica1[]

CODE
  1. (
  2. [0] => BRAK ODPOWIEDZI
  3. [1] => BRAK ODPOWIEDZI
  4. [2] => BRAK ODPOWIEDZI
  5. [3] => BRAK ODPOWIEDZI
  6. [4] => BRAK ODPOWIEDZI
  7. [5] => BRAK ODPOWIEDZI
  8. [6] => BRAK ODPOWIEDZI
  9. [7] => TAK
  10. [8] => BRAK ODPOWIEDZI
  11. [9] => BRAK ODPOWIEDZI
  12. )


$tablica2[]
CODE
  1. (
  2. [0] => NIE
  3.  
  4. [1] => TAK
  5.  
  6. [2] => NIE
  7.  
  8. [3] => TAK
  9.  
  10. [4] => NIE
  11.  
  12. [5] => TAK
  13.  
  14. [6] => TAK
  15.  
  16. [7] => TAK
  17.  
  18. [8] => TAK
  19.  
  20. [9] => TAK
  21. )



i fragmencik kodu do porównania wartości z tablic

CODE
  1. for($d=0;$d<10; $d++)
  2. {
  3.  
  4. $tablica1[$d] = strtoupper($tablica1[$d]);
  5. $tablica2[$d] = strtoupper($tablica2[$d]);
  6.  
  7. if($tablica1[$d] == $tablica2[$d])
  8. {
  9. $wynik++;
  10. }
  11. else {echo" kiszka ";};
  12. };



Niby proste, ale mimo iż np wartość $tablica1[7] jest identyczna jak $tablica2[7] to wg php wartości pół sa inne. W chwili gdy ręcznie ustawię wartosci konkretnych pól, to owszem, php stwierdzi ze wartości są identyczne i zwiększy wartość $wynik o 1.
W trakcie mojego główkowania pomyślałem że moze problemem sa entery, które wczytywane są razem z odpowiedziami z pliku txt do $tablica2[]. Dodałem więc "\n" przy wczytywaniu odpowiedzi z formularza ($_POST). Niestety, mimo że tablice po wyświetleniu wyglądły identycznie (mowa o wybranych polach gdzie została zaznaczona poprawna odpowiedź) to wciąż wg php wartości pól różnią się od siebie. Próbowałem nawet kombinować z kodowaniem znaków (UTF8, ISO).. ale wynik jest zawsze taki sam.. wartości pól są różne, choć wyświetlane są w identyczny sposób.
Byłbym wdzięczny za podpowiedź, czy i gdzie ewentualnie jest jakiś szczególik i dlaczego pola które powinny mieć identyczną wartość wg php różnią się od siebie sad.gif Z góry dziękuję za pomoc
_Borys_
Problem pewnie leży po stronie pliku i odczycie danych z niego, nie pozbywasz się znaków końca linii.
Dla testu wyświetl sobie $tablicę2 poprzez var_dump($tablica2); i zobaczysz z ilu znaków składa się każdy element.
Wyciągając dane z pliku wystarczy przefiltrować funkcją trim() albo rtrim() każdy element tablicy aby pozbyć się białych znaków np. poprzez

$tablica = array_map('trim',$tablica);

zamianę na duże litery też można uprościć:

$tablica = array_map('strtoupper',$tablica);

Natomiast w formularzu bez różnicy czy się wcisnęło enter czy kliknęło myszką, taka sama ilość znaków i bez końca linii, tylko tekst.
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.