Ubuntun käyttö > Ohjelmointi, palvelimet ja muu edistyneempi käyttö

[ ratkaistu ]Kaksiulotteisen taulukon lukeminen php:llä

(1/2) > >>

teele:
Kaikkien kuukausien päivien lämpötilat on annettu tiedostossa riveittäin. Kuukausia voi olla tarkastelussa aika iso määrä, esimerkiksi 100.

php:llä olisi tarkoitus lukea kuukausien tiedot riveittäin 2-ulotteiseen taulukkoon niin, että yhtä kuukautta vastaisi aina yksi "rivi".

Sitten toiseen taulukkon taulukkoon halutaan laskea jokaisen kuukauden päivälämpötilojen keskiarvot. Taulukko on 1-ulotteinen ja sen koko on havaintokuukausien lukumäärä.

Miten homman saisi kätevimmin tehtyä php:llä. (kyllä, php:tä pitäisi tällä kertaa käyttää)

Asia selviää luultavasti netistä hakemalla, mutta se on pitä yrityksen ja monen erehdyksen tie. Siksi asiaa valaisevista vihjeistä olisi iso apu.

 

kamara:
Olisko heittää esimerkkitiedostoa ?

... mutta explode-käskystä saattaisi olla apua.

teele:
Tässä on liitteenä esimerkkitiedosto. Yhden kuukauden tiedot ovat aina omalla rivillään. Päivän lämpötilatieto on erotettu seuraavasta tabulaattorilla, \t. Jos asiaa helpottaa, muutakin erotinta voidaan käyttää, vaikka välilöyntiä. Tässä vaiheessa voidaan myös miinuslämpötilat jättää huomiotta eli voidaan rajoittua vain sellaisiin riveihin, joissa kaikki arvot ovat positiivisia. (esimerkkitiedostossa sellaisia ei taida olle, mutta niitä saa varmaan vaikka miinusmerkit poistamalla)

Tiedot olisi tarkoitus saada php:n taulukkoon niin, että esimerkiksi jokaisen kuukauden (rivin) lämpötilojen keskiarvon voi laskea. Joskus haluttaisiin ehkä laskea jotain muutakin.

kamara:
Onkohan tästä apua ...

lue.php

--- Koodia: ---<?php
$f=fopen("lämpötilat.txt", "r");
$text=fread($f,filesize("lämpötilat.txt"));
fclose($f);
$rivit=explode('\n',$text);
for($i=0;$i<count($rivit);$i++) {
     $taulukko[$i]=explode('\t',$text);
}
print_r($taulukko);
?>

--- Koodi päättyy ---

En ole testannut, eikä ratkaisuni ole kaunein mahdollinen. Tutkiskelen huomenissa, kunhan herään.

kamara:
Tämä toimineen halutulla tavalla ???


--- Koodia: ---<?php
$f=fopen("lämpötilat.txt", "r");
$text=fread($f,filesize("lämpötilat.txt"));
fclose($f);
$rivit=(explode("\n",trim($text)));
for($i=0;$i<count($rivit);$i++) {
     $taulukko[$i]=explode("\t",$rivit[$i]);
     $summa=0;
     for($j=0;$j<count($taulukko[$i]);$j++) $summa=$summa+$taulukko[$i][$j];
     $keskiarvo[$i]=$summa/count($taulukko[$i]);
}
//print_r($taulukko);

?>
<h2>Lämpötilat</h2>
<table border="1">
<?php
        for($i=0;$i<count($taulukko);$i++) {
                echo "<tr>";
                for($j=0;$j<count($taulukko[$i]);$j++) {
                        echo "<td>".($taulukko[$i][$j])."</td>";
                }
                echo "</tr>\n";
        }
?>
</table>
<h2>Keskiarvot</h2>
<table border="1">
<?php
        for($i=0;$i<count($keskiarvo);$i++) {
                echo "<tr><td>".($keskiarvo[$i])."</td></tr>";
        }
?>
</table>

--- Koodi päättyy ---

Navigaatio

[0] Viestien etusivu

[#] Seuraava sivu

Siirry pois tekstitilasta