Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: kaksi taulukkoa

peg [11.03.2011 16:40:34]

#

taulukko kalenteri:         taulukko asiat:
ke	09.03.2011 	    12.03.2011 lääkäri klo 11.00
to	10.03.2011 	    10.03.2011 tentti klo 9.00
pe	11.03.2011          15.03.2011 kilpailut 12.00
la	12.03.2011 	    11.03.2011 kirjasto 16.00
su	13.03.2011
ma	14.03.2011
ti	15.03.2011
ke	16.03.2011
to	17.03.2011

Haluttu lopputulos:
ke	09.03.2011
to	10.03.2011 	tentti klo 9.00
pe	11.03.2011      kirjasto 16.00
la	12.03.2011 	lääkäri klo 11.00
su	13.03.2011
ma	14.03.2011
ti	15.03.2011 	kilpailut 12.00
ke	16.03.2011
to	17.03.2011

Miten tällainen kannattaa tehdä, yritin for silmukassa käydä läpi ja korvata preg_replacella $paiva => $paiva $asia.

(Mod. huom: Käytä kooditageja, jos haluat, että välit säilyvät.)

Chiman [11.03.2011 17:00:11]

#

Onko tuo lähtötilanne suoraan jonkin tiedoston sisältö, vai kirjoititko koodissa olevien taulukkojen sisällön näkyviin tuohon muotoon?

peg [11.03.2011 17:03:08]

#

Lähtötilanne on kaksi tiedostoa. kalenteri ja asiat.

Antti Laaksonen [11.03.2011 17:11:20]

#

kalenteri.txt:

ke 09.03.2011
to 10.03.2011
pe 11.03.2011
la 12.03.2011
su 13.03.2011
ma 14.03.2011
ti 15.03.2011
ke 16.03.2011
to 17.03.2011

asiat.txt:

12.03.2011 lääkäri klo 11.00
10.03.2011 tentti klo 9.00
15.03.2011 kilpailut 12.00
11.03.2011 kirjasto 16.00

kalenteri.php:

<?php
$kalenteri = file("kalenteri.txt");
$asiat = file("asiat.txt");
foreach ($asiat as $asia) {
    $asia = trim($asia);
    $osat = explode(" ", $asia, 2);
    $merkinta[$osat[0]] = $osat[1];
}
foreach ($kalenteri as $paiva) {
    $paiva = trim($paiva);
    $osat = explode(" ", $paiva);
    echo $paiva . " " . @$merkinta[$osat[1]] . "<br>";
}
?>

Ideana on tallentaa taulukkoon $merkinta, mitä tapahtuu kunakin päivänä.

Metabolix [11.03.2011 17:18:33]

#

Itse ihan vain kokoaisin ensin eri päivien asiat ja kävisin sitten päivän kerrallaan läpi.

<?php
$asiat = array();
foreach (file("asiat.txt") as $asia) {
  list($aika, $asia) = explode(" ", $asia, 2);
  $asiat[$aika][] = trim($asia);
}

$tulos = "";
foreach (file("kalenteri.txt") as $paiva) {
  $paiva = trim($paiva);
  sscanf($paiva, "%*s %s", $aika);
  if (empty($asiat[$aika])) {
    $tulos .= $paiva. "\n";
  } else {
    $tulos .= $paiva. "\t". implode(", ", $asiat[$aika]). "\n";
  }
}
echo $tulos;

Muokkaus: Tulipa melkein sama kuin Antilla, mutta minun versioni tukeekin useaa tapahtumaa samana päivänä eikä hämmenny turhista välilyönneistä. :)

Vastaus

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

Tietoa sivustosta