Kirjoittaja Aihe: [ ratkaistu ]Kaksiulotteisen taulukon lukeminen php:llä  (Luettu 3295 kertaa)

teele

  • Käyttäjä
  • Viestejä: 852
    • Profiili
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.

 
« Viimeksi muokattu: 20.08.19 - klo:07.40 kirjoittanut teele »

kamara

  • Käyttäjä
  • Viestejä: 3031
    • Profiili
Vs: Kaksiulotteisen taulukon lukeminen php:llä
« Vastaus #1 : 18.08.19 - klo:14.14 »
Olisko heittää esimerkkitiedostoa ?

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

teele

  • Käyttäjä
  • Viestejä: 852
    • Profiili
Vs: Kaksiulotteisen taulukon lukeminen php:llä
« Vastaus #2 : 18.08.19 - klo:21.01 »
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

  • Käyttäjä
  • Viestejä: 3031
    • Profiili
Vs: Kaksiulotteisen taulukon lukeminen php:llä
« Vastaus #3 : 18.08.19 - klo:21.21 »
Onkohan tästä apua ...

lue.php
Koodia: [Valitse]
<?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);
?>


En ole testannut, eikä ratkaisuni ole kaunein mahdollinen. Tutkiskelen huomenissa, kunhan herään.
« Viimeksi muokattu: 18.08.19 - klo:21.25 kirjoittanut kamara »

kamara

  • Käyttäjä
  • Viestejä: 3031
    • Profiili
Vs: Kaksiulotteisen taulukon lukeminen php:llä
« Vastaus #4 : 19.08.19 - klo:06.55 »
Tämä toimineen halutulla tavalla ???

Koodia: [Valitse]
<?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>

teele

  • Käyttäjä
  • Viestejä: 852
    • Profiili
Vs: Kaksiulotteisen taulukon lukeminen php:llä
« Vastaus #5 : 20.08.19 - klo:07.40 »
 
No niinpäs toimii, kiitos!     :)