![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
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
$tablica2[] CODE
i fragmencik kodu do porównania wartości z tablic CODE
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 ![]() |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 587 Pomógł: 190 Dołączył: 5.02.2011 Skąd: 64-800 Ostrzeżenie: (0%) ![]() ![]() |
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. Ten post edytował _Borys_ 28.03.2013, 02:20:13 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 11:03 |