Menee hermot:
<?PHP $expl1 = $_POST["expl1"]; $expa1 = $_POST["expa1"]; $expn1 = $_POST["expn1"]; $expl2 = $_POST["expl2"]; $expa2 = $_POST["expa2"]; $expn2 = $_POST["expn2"]; $exp_incl1; $exp_inca1; $exp_incn1; $exp_incl2; $exp_inca2; $exp_incn2; $exp_decl1; $exp_deca1; $exp_decn1; $exp_decl2; $exp_deca2; $exp_decn2; function exp_lasku($muut1, $muut2, $muut3){ $muut2 = $muut1 * 0.04 + 0.96; $muut3 = 1 - $muut1 * 0.02; return $muut2; return $muut3; } exp_lasku($expl1, $exp_incl1, $exp_decl1); exp_lasku($expa1, $exp_inca1, $exp_deca1); exp_lasku($expn1, $exp_incn1, $exp_decn1); exp_lasku($expl2, $exp_incl2, $exp_decl2); exp_lasku($expa2, $exp_inca2, $exp_deca2); exp_lasku($expn2, $exp_incn2, $exp_decn2); print $exp_incl1 . "<BR>"; print $exp_inca1 . "<BR>"; print $exp_incn1 . "<BR>"; print $exp_incl2 . "<BR>"; print $exp_inca2 . "<BR>"; print $exp_incn2 . "<BR>"; print $exp_decl1 . "<BR>"; print $exp_deca1 . "<BR>"; print $exp_decn1 . "<BR>"; print $exp_decl2 . "<BR>"; print $exp_deca2 . "<BR>"; print $exp_decn2 . "<BR>"; ?>
Miksihän se ei nyt suotu toimimaan(ei suostu tulostaman mitään)?
Olet kyllä selvästi ymmärtänyt jotain pahasti väärin...
Ensinnäkin muuttujia ei tarvitse millään tavalla esitellä PHP:ssa. Kaikkien muuttujien arvo on oletuksena NULL.
https://www.php.net/manual/en/language.variables.php
Toiseksi return palauttaa jonkin arvon funktion palautusarvona. Lisäksi tuo palautusarvo on sijoitettava johonkin tai annettava toiselle funktiolle tai se katoaa bittiavaruuteen. Return lisäksi lopettaa funktion suorituksen, joten tuohon toiseen returniin asti ei koskaan päästä. Jos halutaan palauttaa monta arvoa, on käytettävä taulukkoa (array).
https://www.php.net/manual/en/functions.php
https://www.php.net/manual/en/language.types.array.php
Jotta noiden muuttujien arvot siirtyisivät takaisin täytyisi tehdä näin:
<?php // -- snip -- function exp_lasku($muut1, $muut2, $muut3){ $muut2 = $muut1 * 0.04 + 0.96; $muut3 = 1 - $muut1 * 0.02; return array($muut2, $muut3); } list($exp_incl1, $exp_decl1) = exp_lasku($expl1, $exp_incl1, $exp_decl1); list($exp_inca1, $exp_deca1) = exp_lasku($expa1, $exp_inca1, $exp_deca1); list($exp_incn1, $exp_decn1) = exp_lasku($expn1, $exp_incn1, $exp_decn1); list($exp_incl2, $exp_decl2) = exp_lasku($expl2, $exp_incl2, $exp_decl2); list($exp_inca2, $exp_deca2) = exp_lasku($expa2, $exp_inca2, $exp_deca2); list($exp_incn2, $exp_decn2) = exp_lasku($expn2, $exp_incn2, $exp_decn2); // -- snip -- ?>
https://www.php.net/manual/en/function.list.php
Tai käyttää viittauksia:
<?php // -- snip -- function exp_lasku($muut1, &$muut2, &$muut3){ $muut2 = $muut1 * 0.04 + 0.96; $muut3 = 1 - $muut1 * 0.02; } // Funktion kutsut voidaan säilyttää ennallaan // -- snip -- ?>
https://www.php.net/manual/en/language.references.php
Kummankaan esimerkin toimivuutta en ole testannut (paitsi syntaksin puolesta).
lainaus:
Olet kyllä selvästi ymmärtänyt jotain pahasti väärin...
Erittäin todennäköisesti. :)
hmm..en tajunnut noita viittauksia...mitä sinä itseasiassa muutit siinä?
EDIT:
Jaa tuo "&"
mitä nuo $-merkit muuten tarkoittavat? En ole ennen nähnyt semmoisia tuossa yhteydessä. :o
lainaus:
mitä nuo $-merkit muuten tarkoittavat? En ole ennen nähnyt semmoisia tuossa yhteydessä. :o
$-merkki tarkoittaa PHP:ssä, että kyseessä on muuttuja.
Äh, mun moka. Tarkoitin siis noita &-merkkejä funktion parametrien edessä. :/
lainaus:
Äh, mun moka. Tarkoitin siis noita &-merkkejä funktion parametrien edessä. :/
Lue tuolta:
https://www.php.net/manual/en/language.
Minun käsitykseni mukaan se tarkoittaa sitä, että muuttujat viittaavat samaan arvoon.
Ja sitten toinen kysymys:
on seuraavanlainen koodi:
<?PHP function mobility(&$muut1){ $muut2 == $amount * $mobility; $muut3 == $amount * $weight; $muut1 == $muut2 / $muut3; } mobility($side1_mob); mobility($side2_mob); ?>
Nyt pitäisi saada niin, että $amount, $mobility ja $weight haetaan oliosta. Tai itse asiassa useista olioista.
Tässä on "selkokielellä" mitä sen pitäisi tehdä:
(olio1 amount*olio1 mobility+olio2 amount*olio2 mobility+olio3 amount*olio3 mobility...)/(olio1 amount*olio1 weight+olio2 amount*olio2 weight+olio3 amount*olio3 weight...)
lainaus:
Ensinnäkin muuttujia ei tarvitse millään tavalla esitellä PHP:ssa. Kaikkien muuttujien arvo on oletuksena NULL.
Isommissa ohjelmissa saattaa olla kuitenkin hyvä tuoda esille käytettävät muuttujat joko scriptissä tai sitten erillisessä dokumentissa. Dokumentti on sinänsä parempi vaihtoehto, sillä sitä ei jokaisen käyttäjän tarvitse ladata jokaisella sivun suorituskerralla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.