Hej alle
Nu er jeg (igen) på herrens mark. Det drejer sig om denne side:
http://www.obese.dk/tidspunkt.php
Jeg har et sæt datoer som brugerne kan sætte mærker ved: nej,
måske og ja. Svarene kodes som henholdsvis 0, 1 og 2. Det giver
en svarfil der ser ud som følger, hvor NN er navnet, og de tre
store bogstaver er afsenderdomænet, og det isolerede 0 er
ligegyldigt i denne her sammenhæng.
NN1,XXX,0,2 2 0 0 2 2 2 2 2 2 2 2 2
NN2,YYY,0,2 2 2 2 0 1 0 1 2 2 2 2 2
NN3,
,0,1 1 2 2 0 1 1 0 1 0 1 1 1
NN4,ÆÆÆ,0,2 2 2 2 2 2 2 2 2 2 2 2 2
Resultaterne præsenterer jeg i tabellen nederst til højre. I
testfasen har jeg tilføjet feltet "size" der burde være 4 i alle
tilfælde, men det er 6 i den sidste linje, og der er problemet.
Fremgangsmåden er at jeg opretter et array af arrays med fire
pladser ($time_scores) som bruges til nej, måske, ja og (senere)
samlet score. Det er de 4 felter som ikke må blive til 6.
Jeg gennemløber hver linje og udtrækker variablen $choices som er
striben af talsvar. Den eksploderer jeg til arrayet $ican som
jeg gennemløber og for hver værdi opdaterer jeg data for den
tilsvarende dato. Jeg beregner også en samlet score, men den del
er fjernet af koden her for at forenkle den.
Det virker perfekt på alle datoerne - undtagen lige den sidste.
Man kan se den korrekte score 7, men ved siden af står både Ja
og Måske til 0, og de burde være 3 og 1. Størrelsen på
$time_scores[$nr] står til 4 lige indtil sidste linje hvor den
er vokset til 6. Det viser sig at der er skudt to 0'er ind
forrest i $time_scores[12] (sidste post).
Hvis jeg hægter et mellemrum på datalinjerne til sidst, bliver
den sidste egentlige dato skrevet korrekt, men så dukker der en
ny linje op med et 0. Hvis jeg hægter et komma på datalinjerne
til sidst, virker alting rigtigt (jeg eksploderer dem tidligere
i koden efter kommaer).
Det mest mærkelige er at jeg bruger næsten samme princip på denne
her side:
http://www.obese.dk/rejsemaal.php
men der er ingen problemer.
Her er hele koden til den ramme det drejer sig om. $filecontent
er det array der indeholder linjerne læst ind fra filen:
<div class='bredspalte'>
<table cellspacing='0' cellpadding='5'>
<tr><td> </td><th>Samlet score</th><th>Ja</th><th>Måske</th><th>size of array:</th></tr>
<?
$time_scores=Array();
for ($nr=0; $nr<$datenumber; ++$nr) $time_scores[]=Array(0,0,0,0);
$max=-1;
foreach ($filecontent as $entry) {
list ($nam,$host,$lock,$choices)=explode(',', $entry);
$icans=explode(' ',$choices);
foreach ($icans as $nr => $ican) {
++$time_scores[$nr][$ican]; // Denne linje producerer fejlen.
// Hvis jeg kommenterer den ud, bliver size ved med at være 4.
}
}
foreach ($time_scores as $nr => $time_score) {
list($no,$may,$yes,$score)=$time_score;
echo "<tr><td>$time_choices[$nr]</td><td>$score</td><td>$yes</td><td>$may</td><td>".count($time_score)."</td></tr>\n";
}
?>
</table>
</div> <!-- class 'bredspalte' -->
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/