Nyt tuli vaan ongelmaksi miten lasken php:llä arvojen erotuksen
esim
-1 ja 4
3 ja -2
pitäisi saada vastaukseksi
nousut 5
laskenut 5
Vai ajattelenko taas liian monimutkaisesti
Toimisikohan kyseessä miinus operaattori ?
$x = -1 - 4 = -5; $x = 3 - (-2) = 5; if ($x<0) echo "nousut ".(-$x); else if ($x==0) echo "pysynyt samana"; else echo "laskenut ".$x;
Vai mitä haet?
Loogisemmin toimivaksi saa vaihtamalla arvojen paikkaa, ja ehtolauseen operaattorin '>':ksi.
peran: eihän tuo edes toimi:
PHP kirjoitti:
Parse error: syntax error, unexpected '=' in your code on line 1
Et voi asettaa lausekkeen -1 - 4
arvoa miinus viideksi.
Edit: Toimivampi:
$lukua = -1; $lukub = 4; if($lukua < $lukub) { echo "Noussut " . ($lukub - $lukua); } else if($lukua > $lukub) { echo "Laskenut " . ($lukua - $lukub); } else { echo "Pysyi samana"; }
Tulostaa:
Noussut 5
Eki++ kirjoitti:
peran: eihän tuo edes toimi: – –
No sen ei ollutkaan tarkoitus olla cut&paste-ratkaisu vaan suuntaa antava.
peran kirjoitti:
No sen ei ollutkaan tarkoitus olla cut&paste-ratkaisu vaan suuntaa antava.
suunnankin kannattaa olla toimiva :)
peran kirjoitti:
Eki++ kirjoitti:
peran: eihän tuo edes toimi: – –
No sen ei ollutkaan tarkoitus olla cut&paste-ratkaisu vaan suuntaa antava.
No anna sitten pseudoa tai ihan validia koodia. Toimimaton koodi jossa on logiikka pielessä ei auta ketään.
Kiitokset, Ekin tyylillä mennään. Ajattelin tuotakin hieman vaikeasti mutta tuohan osaa laskeskella negatiiviset yms ihan oikein..
manninen kirjoitti:
peran kirjoitti:
No sen ei ollutkaan tarkoitus olla cut&paste-ratkaisu vaan suuntaa antava.
suunnankin kannattaa olla toimiva :)
Kyllähän jos sen silmän ottaa pois sieltä syvältä aanuksesta, näkee mitä peran tuossa tekee. Eli näyttää mistä luvut tulevat ihan laskukaavan turvin.
Miksi et laske erotusta suoraan kyselyssä?
Jos oletetaan että id kentässä on juokseva numerointi niin kysely voisi mennä jotenkin näin:
select arvonyt.arvo as Arvonyt, arvoennen.arvo as ArvoEnnen, arvoennen.arvo - arvonyt.arvo as Erotus from taulu arvonyt left outer join taulu arvoennen on arvoennen.id = arvonyt.id - 4 order by arvonyt.id desc limit 1
Lebe80 kirjoitti:
manninen kirjoitti:
peran kirjoitti:
No sen ei ollutkaan tarkoitus olla cut&paste-ratkaisu vaan suuntaa antava.
suunnankin kannattaa olla toimiva :)
Kyllähän jos sen silmän ottaa pois sieltä syvältä aanuksesta, näkee mitä peran tuossa tekee. Eli näyttää mistä luvut tulevat ihan laskukaavan turvin.
Eihän se ole ollenkaan niin selvää, koska järkevän muotoilun sijaan on käytetty syntaktisesti rikkinäistä php:tä. Joko tehdään toimivaa koodia tai käytetään järkevää pseudotyyliä.
The Alchemist kirjoitti:
Lebe80 kirjoitti:
manninen kirjoitti:
peran kirjoitti:
No sen ei ollutkaan tarkoitus olla cut&paste-ratkaisu vaan suuntaa antava.
suunnankin kannattaa olla toimiva :)
Kyllähän jos sen silmän ottaa pois sieltä syvältä aanuksesta, näkee mitä peran tuossa tekee. Eli näyttää mistä luvut tulevat ihan laskukaavan turvin.
Eihän se ole ollenkaan niin selvää, koska järkevän muotoilun sijaan on käytetty syntaktisesti rikkinäistä php:tä. Joko tehdään toimivaa koodia tai käytetään järkevää pseudotyyliä.
No, en ole muuttamassa tapaani vastata, mutta pitäähän syntaksillisesti virheelliset koodit muuttaa joka tapauksessa, sillä Ekinkin koodi antaa vaan vastauksena vakion:'Noussut 5', mikäli ei muuta tarvittaviksi muuttujia $lukua ja $lukub rivejä.
Lisäksi jos SQL:n avulla saa tiedot muuttujille, niin luulisi olevan tuttua muuttujan asetusformaatin olevan tuttua. Jos se ei ole selvää, niin silloin on turvallisinta pysyä web-sivujen ohjelmoinnista pois.
Tästä on saatu pikkuasiasta taifuuni vesilasiin.
Neuvottava ei kuitenkaan ollut täysin vasta-alkaja, joten aivojen käyttö on sallittu.
Lebe80 kirjoitti:
manninen kirjoitti:
peran kirjoitti:
No sen ei ollutkaan tarkoitus olla cut&paste-ratkaisu vaan suuntaa antava.
suunnankin kannattaa olla toimiva :)
Kyllähän jos sen silmän ottaa pois sieltä syvältä aanuksesta, näkee mitä peran tuossa tekee. Eli näyttää mistä luvut tulevat ihan laskukaavan turvin.
Kerrotko Lebe80, miten se silmä otetaan pois sieltä. Ei ole omakohtaista kokemusta, enkä osaa toimia ilman selkeitä ohjeita ;)
Kyllähän tuosta peran ensimmäisestä esimerkistä ratkaisu on suoraan nähtävissä.
PHP:ta en osaa, mutta tuosta saa suoraan kirjoiteltua selkeän REXX-toteutuksen:
suunta. = 0 suunta.0 = 'laskenut ' suunta.1 = 'noussut ' a = 3 b = -2 say suunta.[a < b] || abs(a - b)
Täällähän on keskustelua. Jokatapauksessa sain tuon toimimaan niinkuin halusin..
NYt aloin miettimään että miten saisin isommasta joukosta laskettua aina edellisen erotuksen..
Eli jos taulussa on
4
6
7
9
13
Niin pitäisi tulostaa 2 1 2 4
Pyörittelin tuossa aikani foreach looppia mutta ei nyt keksi miten sen edellisen tallentaisi yms ettei hyppäisi yli aina yhtä välistä.
Tässä tapauksessa luku kasvaa kokoajan
TEin tälläisen virityksen
Ohoh, näyttää pikkusen yksinkertaisemmalta :)
Sama foreach-lauseella:
Arrayta käyttäen edes apumuuttuja ei ole pakollinen, mutta tykkään enemmän tuosta foreach-ratkaisusta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.