Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Keski-ikä syntymäaikojen perusteella

antor [26.05.2007 16:44:39]

#

Pelaajien keski-ikä pitäis laskea tän näköisestä tiedostosta:

veikko||23.04.1971||jalasjärvi||leader||active
petteri||19.12.1993||bärsrööri||member||active
unto||10.12.1982||timbuktu||member||inactive
jne...

Syntämäajasta olen laskenut iän näin:

for($i=0;$i<$rivienmaara;$i++)
{
   $pff = explode("||",$lines[$i]);
   $arr = explode(".",$pff[1]);
   $ika = round((time() - mktime(0, 0, 0, $arr[1], $arr[0], $arr[2])) / (31556926), 2);
}

Lisäksi haluisin saada memberit tulostettua nimien mukaan aakkosjärjestyksessä. Miksi ei tämä ei tee niin?

      $lines = file ('matsi/members.txt');
      $rivienmaara = count ($lines);
      natcasesort($lines);
      for($i=0;$i<$rivienmaara;$i++)
      {
        $pff = explode("||",$lines[$i]);

        $arr = explode(".",$pff[1]);
        $ika = round((time() - mktime(0, 0, 0, $arr[1], $arr[0], $arr[2])) /            (31556926), 2);

        print "<tr><td class=\"member\"><b><u>$pff[0]</u></b><td><tr><br>";
        print "<tr><td class=\"member\"><b>Age:</b> $ika<td><tr><br>";
        print "<tr><td class=\"member\"><b>Location:</b> $pff[2]<td><tr><br>";
        print "<tr><td class=\"member\"><b>Rank:</b> $pff[3]<td><tr><br>";
        print "<tr><td class=\"member\"><b>Status:</b> $pff[4]<td><tr><br>";
        print "<tr><td class=\"member\"><b>&nbsp;</b> <td><tr><br>";
      }

Antti Laaksonen [26.05.2007 17:01:38]

#

Keski-ikä on ikien summa jaettuna ikien määrällä. Eli laske kaikki iät yhteen johonkin muuttujaan silmukan sisällä ja jaa lopuksi tämän muuttujan arvo henkilöiden määrällä.

$ika = // ...
$iat += $ika;

// ...

echo "Keski-ikä: " . ($iat / count($lines));

Funktio natcasesort järjestää taulukon, mutta ei muuta indekseitä. Tämän vuoksi perinteisen for-silmukan kannalta taulukko ei ole muuttunut mitenkään. Helpoiten asian voi korjata käyttämällä foreach-silmukkaa.

foreach ($lines as $line) {
     $pff = explode("||", $line);
     // ...

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta