vergelijken van twee $trings gaat niet als gewenst
Voor de gesloten opgaven wil ik graag dat de goede antwoorden in groen en de foute in rood worden gepresenteerd. Ik vergelijk steeds een regel uit het aangemaakte tekstbestand met de gemaakte toetsen met een lid uit een array met de goede antwoorden. Als die twee gelijk zijn komt de regel in groen tevoorschijn, anders in rood. Is de bedoeling. Bij de vergelijking worden echter alle paren als ongelijk beoordeeld, terwijl ze dat niet zijn. Hieronder mijn PHP-code en enkele paren, met links het goede antwoord en rechts het antwoord van de adspirant-cursist. Ik heb van alles geprobeerd om te ontdekken waarom de paren niet de gewenste kleur krijgen naargelang ze gelijke leden hebben, maar ik kom er niet uit. Ik zou erg blij zijn met enige suggesties die naar de oplossing kunnen leiden.
PM
NB. de toetsdata zitten in een bestandje waarvan de naam is opgeslagen in $toetsdata (zoiets als "toetsdata1245.txt"), de correcte antwoorden in de array ($ingevuld_correct)
echo "\n\n\n<P><P> Hier beginnen de toetsdata: <P>\n\n";
$file = fopen($toetsdata, "r");
for ($x=0;$x<=count($ingevuld_correct)-1;$x++){
$line = fgets($file);
if ($ingevuld_correct[$teller]!=$line){
echo "<font color='red'>";
}else{
echo "<font color='green'>";
}
echo $x." ".$ingevuld_correct[$x]." ".$line."</font>oo</BR>";
}
fclose($file);
Hieronder vier paren van correcte antwoorden (1 en 4) en incorrecte (2 en 3). Die laatste dus zouden rood moeten zijn, tegenover het groen van 1 en 4.
0 automaat automaat
1 lokaal locale
2 schrikt sgrikt
3 gemakkelijk gemakkelijk
Gewijzigd op 17/08/2017 23:17:19 door - Ariën -
Echo $line eens. En het kan zijn dat er een enter aan het eind van $line staat dus gebruik trim($line).
file()? Let er wel op dat hier nog regeleinden aan vast kunnen zitten, maar die kun je eenvoudig verwijderen met behulp van array_map('trim', $array) ofzo.
En als iets niet lijkt te matchen, print het eens op het scherm :).
@SanThe wss zit de hele inhoud van het bestand in $line ipv een enkele regel, althans in de eerste iteratie, mogelijk is die na de eerste iteratie leeg omdat er niets meer te lezen valt. Bij twijfel --> maak het visueel (dump naar scherm).
Inspecteer eens wat in $line zit, en zou je niet beter het hele bestand in één keer in een array kunnen lezen met behulp van En als iets niet lijkt te matchen, print het eens op het scherm :).
@SanThe wss zit de hele inhoud van het bestand in $line ipv een enkele regel, althans in de eerste iteratie, mogelijk is die na de eerste iteratie leeg omdat er niets meer te lezen valt. Bij twijfel --> maak het visueel (dump naar scherm).
Gewijzigd op 12/08/2017 01:41:15 door Thomas van den Heuvel
Er zat een heel simpele fout in: ik gebruikte twee verschillende variabelen ($x en $teller) om leden van een paar uit twee arrays te vergelijken. Kijk maar:
for ($x=0;$x<=count($ingevuld_correct)-1;$x++){
$line = fgets($file);
if ($ingevuld_correct[$teller]!=$line){
Gewijzigd op 17/08/2017 23:17:30 door - Ariën -
- Ariën - op 17/08/2017 23:16:52:
Geen admin/mod vraag over het forum. Daarom even een schopje naar het juiste forum.
Als relatief nieuwe gebruiker vraag ik admin naar welk forum mijn bericht is geplaatst. Ik heb namelijk weer een advies nodig over een pagina met zowel javascript als php en wil dus graag weten waar ik mijn vraag om hulp het beste kan posten.
Bij voorbaar dank,
Paul Meijer
Daarom heb ik dit topic naar het 'programmeerhulp' forum verhuisd.
Op de forum-index staan beschrijvingen bij de forums, zodat duidelijk is waar welk topic hoort.
Gewijzigd op 04/09/2017 17:58:58 door - Ariën -