Re: PHP Newbie can't evaluate numerical string as number [message #175923 is a reply to message #175921] |
Tue, 08 November 2011 08:41 |
Graham
Messages: 4 Registered: November 2011
Karma:
|
Junior Member |
|
|
Unfortunately not. Here you introduce the formula into the main script,
whereas I need to introduce it in a separate script (or import it from a
database) to save me having to amend it countless times if it ever changes.
Hence me using str_replace to change !big_number to $big_number. Although
this worked, I was still left with a 'numerical string' which I couldn't
evaluate. So I guess my question is how do you evaluate a numerical string
such as '30000 - 3000'?
"Denis McMahon" <denismfmcmahon(at)gmail(dot)com> wrote in message
news:4eb81acf$0$28518$a8266bb1(at)newsreader(dot)readnews(dot)com...
> On Mon, 07 Nov 2011 16:25:42 +0000, Graham wrote:
>
>> I'm a Perl veteran (well almost!) but a PHP newbie. I've got a simple
>> subtraction formula in 'vars.php' as follows:
>>
>> <?php
>> $formula = "!big_number - !small_number"; ?>
>>
>> I then include it in 'test.php' along with a few variables, do a bit of
>> string replacement, run eval on it, then print it
>>
>> <?PHP
>> include 'vars.php';
>> $big_number = 30000;
>> $small_number = 3000;
>> $formula = str_replace("!", "$", $formula); eval("\$formula =
>> \"$formula\";");
>> //$formula = intval($formula);
>> //settype($formula, "integer");
>> print ("formula = $formula\n");
>> ?>
>>
>> The above gives me...'formula = 30000 - 3000' when of course what I want
>> is...'formula = 27000'
>>
>> A few of the many things I've tried are commented out. Please put me out
>> of my misery someone!
>
> Does the following working example help?
>
> <?php
>
> $big_number = 50000;
> $small_number = 5000;
>
> $formula1 = "\$result1 = \$big_number - \$small_number;";
> $formula2 = "return(\$big_number - \$small_number);";
>
> echo "\$formula1 = '{$formula1}'\n";
> echo "\$formula2 = '{$formula2}'\n";
>
> eval($formula1);
> $result2 = eval($formula2);
>
> echo "\$result1 = {$result1}\n";
> echo "\$result2 = {$result2}\n";
>
> ?>
>
> Rgds
>
> Denis McMahon
|
|
|