Hei, minulla olisi pieni ongelma. Minun pitäisi tehdä äänestyssovellus, PHP-skripti, joka muokkaa tulokset.txt tiedostoa äänestyksen jälkeen niin, että äänestetyn ehdokkaan äänimäärää on kasvatettu yhdellä. Ohjelman pitää lopuksi tulostaa näytölle annettujen äänien yhteenlaskettu lukumäärä juuri annettu ääni mukaan lukien. Tällä hetkellä ohjelma laskee ne äänet, jotka tiedostoon on kirjattu (yht 29 kpl) mutta ei lisää annettua ääntä mukaan. Ohjelman pitäisi siis tulostaa lopuksi "Ääniä annettu yhteensä: 30 kappaletta."
Koodini näyttää tältä:
<?php $ehdokas = $_GET["ehdokas"]; $tulokset = file("tulokset.txt"); foreach ($tulokset as $rivi) { $osat = explode("|", $rivi); $aani = $aani + $osat[1]; } if ($ehdokas == 1) { $aani++; } elseif ($ehdokas == 2) { $aani++; } elseif ($ehdokas == 3) { $aani++; } elseif ($ehdokas == 4) { $aani++; } elseif ($ehdokas == 5) { $aani++; } echo "Ääniä annettu yhteensä: $aani kappaletta."; ?>
Tiedoston sisältö on tällainen:
1|2
2|6
3|8
4|3
5|10
Lisäys: Täydennän vielä sen verran, että viimeisen rivin pitäisi siis muuttua tiedostoon 5|11 :sta tuon läpiajettavan testin perusteella :)
Aivan täydellinen tämä ei ole, mutta lisää oikeaan kohtaan äänen.
<?php $ehdokas = isset($_GET['ehdokas']) ? $_GET['ehdokas'] : 0; $ehdokkaat = Array(); $aanet = file("tulokset.txt"); $aanimaara = 0; foreach($aanet AS $rivi) { $data = explode("|", $rivi); $ehdokkaat[(int)$data[0]] = (int)$data[1]; $aanimaara += $ehdokkaat[$data[0]]; } if ($ehdokas > 0) { $ehdokkaat[$ehdokas] += 1; } else { echo "<p>Ei valittua ehdokasta näytetään kokonaisäänimäärä</p>"; } echo "<p>Ääniä annettu yhteensä: {$aanimaara} kappaletta.</p>"; echo "<p>Jakauma eri ehdokkaille</p>"; echo "<ul>"; foreach ($ehdokkaat AS $ehdokas => $aanet) { echo "<li>{$ehdokas} {$aanet}</li>"; } echo "</ul>";
Huomaathan, että tässä ei tallenneta mitään tiedostoon, mutta et sellaista pyytänytkään. Mikäli ehdokasta ei ole valittu (tai se on 0), niin tulos on mitä tiedostosta löytyy.
Lisäksi tulokset ovat jokaiselle ehdokkaalle valmiina taulukossa.
Ehdokkaat taulukon serialisointi/deserialisointi tiedostoon olisi selkeämpi vaihtoehto.
$ehdokkaat = unserialize(file_get_contents("tulokset.txt")); $aanimaara = array_sum($ehdokkaat); //etc..
qeijo kirjoitti:
deserialisointi...
unserialize();
Vähän kuin eräällä foorumilla puhuttiin sovellusten deinstalloinnista.
Lebe80 kirjoitti:
qeijo kirjoitti:
deserialisointi...
unserialize();
Vähän kuin eräällä foorumilla puhuttiin sovellusten deinstalloinnista.
Wikipedia kirjoitti:
This process of serializing an object is also called deflating or marshalling an object. The opposite operation, extracting a data structure from a series of bytes, is deserialization (which is also called inflating or unmarshalling).
Deserialization on siis ihan yleisesti käytetty termi.
http://lmgtfy.com/?q=deserialize object
Lisäksi esittämäsi sana deinstall esintyy mm. Oxfordin sanakirjassa.
http://oxforddictionaries.com/definition/
Definition of deinstall in English
deinstall
(also deinstal)
verb (deinstalls or deinstals, deinstalling, deinstalled)
[with object]remove (an application or file) from a computer.
Derivatives
deinstallation
noun
deinstaller
noun
Vähän kuin: debunking
de - bunk - ing: To expose or ridicule the falseness, sham, or exaggerated claims off some one else.
Tässä tapauksessa sinun.
No kyllä mä nyt saakeli tiedän, et se on käytössä oleva sana, mut jos kerran funktio on unserialize, niin kai sä nyt puhut sit samalla termillä!
http://www.urbandictionary.com/define.php?term=deinstall:
Deinstall
A just more awesomer replacement for uninstall.
No sitten saakeli.
Aihe on jo aika vanha, joten et voi enää vastata siihen.