PHP -> Math

Praat mee over van alles en nog wat!
Forumregels
Dit forum is voor alle zinnige gesprekken buiten phpBB om. Discussies en gesprekken over interessante onderwerpen.

Een nieuw onderwerp moet..:
  • uiteraard voldoen aan de algemene voorwaarden
  • niet passen in de gewone supportfora
  • interessante zijn voor het overgrote deel van onze gebruikers
  • een neutrale of positieve ondertoon hebben
  • anders zijn dan bestaande onderwerpen
Plaats reactie
ElbertF
Berichten: 5803
Lid geworden op: 12 okt 2004, 08:34
Contacteer:

PHP -> Math

Bericht door ElbertF » 07 feb 2006, 12:26

Is er een PHP-functie (als in JavaScript) om een som in een string uit te rekenen? Zoiets als:

print math('1+1');

output: 2

:?:

Gebruikersavatar
WebSiteNet
Berichten: 6524
Lid geworden op: 20 okt 2003, 16:56
Locatie: Wieringerwerf
Contacteer:

Bericht door WebSiteNet » 07 feb 2006, 16:35

Je kan proberen om met eval() iets voor elkaar te krijgen of een functie uit math te halen.

ElbertF
Berichten: 5803
Lid geworden op: 12 okt 2004, 08:34
Contacteer:

Bericht door ElbertF » 07 feb 2006, 21:40

eval() is denk ik wat ik zoek, ik heb nu alleen geen beschikking over een server..

$formule = '1 + 1';
eval('$uitkomst = ' . $forumule . ';');
print $uitkomst;

Zou dit moeten werken?

Bedankt :bier:

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20315
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 07 feb 2006, 21:48

Parse error: syntax error, unexpected ';' in D:\files\test.php(3) : eval()'d code on line 1


Krijg ik dan.

Code: Selecteer alles

<?php
$formule = '1 + 1';
eval('$uitkomst = ' . $formule . ';');
print $uitkomst; 
?>
Werkt wel :)

ElbertF
Berichten: 5803
Lid geworden op: 12 okt 2004, 08:34
Contacteer:

Bericht door ElbertF » 07 feb 2006, 21:51

Door een spelfoutje in "formule" dus, maar ik ben blij dat het werkt :)

Nu kan ik wiskunde gebruiken in m'n templates :D

Donny_nl
Berichten: 463
Lid geworden op: 27 feb 2004, 13:55
Locatie: Rotterdam
Contacteer:

Bericht door Donny_nl » 08 feb 2006, 11:59

het kan nog makkelijker:

Code: Selecteer alles

<?php 

$uitkomst = 1+1;
print ($uitkomst);

# of

print(1+1);

?>
Geeft allebei 2 als resultaat, je kunt variabelen simpelweg printen, ongeacht het type van de var (string of integer). Of je wilt weten of dit ook goed PHP is kun je error_reporting(E_ALL) erboven zetten. Je zult zien dat er geen fouten zijn en dit dus acceptabel is.
Wil je Poker leren spelen?
SQL leren?

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20315
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 08 feb 2006, 12:18

Code: Selecteer alles

$var = '1+1';
print $var; 
Print toch echt , en dat was niet de bedoeling ;)

Donny_nl
Berichten: 463
Lid geworden op: 27 feb 2004, 13:55
Locatie: Rotterdam
Contacteer:

Bericht door Donny_nl » 08 feb 2006, 13:41

Er staat toch een duidelijk verschil in jouw scriptje en de mijne.

Jij definieert $var als een string en die print je vervolgens. Dan krijg je als ouput idd de string 1+1. Ik maak een var die 1+1 optelt en de uitkomst print. Verschil zit em in de quotes. Daarmee definieer je een string in dit geval. Zonder quotes 'ziet' PHP dat er een berekening moet worden uitgevoerd.
Wil je Poker leren spelen?
SQL leren?

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20315
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 08 feb 2006, 14:07

Donny_nl schreef:Er staat toch een duidelijk verschil in jouw scriptje en de mijne.

Jij definieert $var als een string en die print je vervolgens. Dan krijg je als ouput idd de string 1+1. Ik maak een var die 1+1 optelt en de uitkomst print. Verschil zit em in de quotes. Daarmee definieer je een string in dit geval. Zonder quotes 'ziet' PHP dat er een berekening moet worden uitgevoerd.
de vraag van spambot is om het als het in een string staat uit te rekenen. En dat kan dus bij jouw oplossing niet.

ElbertF
Berichten: 5803
Lid geworden op: 12 okt 2004, 08:34
Contacteer:

Bericht door ElbertF » 08 feb 2006, 23:45

Dank je Donny_nl, maar zoals Paulus aangaf heb je de vraag niet helemaal begrepen. eval() maakt het mogelijk formules in templates of bbcode te parsen, bijv:

[math](1 + 2) * 3[/math]

..wordt dan '9'. Ik moet het alleen wel uitwerken om het veilig te houden, anders wordt elke PHP-code uitgevoerd i.p.v. alleen rekenkundige forumules.. :roll:

Plaats reactie