Вот, встала такая проблема, не знаю, как решить ее, поэтому прошу помощи у Вас. Ситуация: нужно написать скрипт, который на вход получает числовые данные и формулы, по которым эти данные считать. Т.е., например, в отдельном файлике есть формулы для расчета, вида(например): $d=$a+b+c, следуюшая формула: $d=$a+b-c. Каждая формула с новой строки. Скрипт считывает данные эти. В параметры он подставляет значения массивов $a, $b, $c(как в формуле, только вместо параметров - массивы)(по индексам) . В результате заполняется другой(например, у меня $formula3) массив с матем.выражениями. Получилось такое:
Array (
[0] => $d=(0+30751+28379)/(100*0);
[1] => $d=(1+18284+7544)/(100*1);
[2] => $d=(2+309+19537)/(100*2);
[3] => $d=(3+22986+23734)/(100*3);
[4] => $d=(4+30523+7607)/(100*4);
[5] => $d=(5+28248+6436)/(100*5);
[6] => $d=(6+31665+23693)/(100*6);
[7] => $d=(7+18582+3650)/(100*7);
[8] => $d=(8+19479+24147)/(100*8);
[9] => $d=(9+6148+9104)/(100*9);
[10] => $d=(10+8685+13449)/(100*10);
[11] => $d=(11+22562+19598)/(100*11);
[12] => $d=(12+4787+3247)/(100*12);
[13] => $d=(13+12400+26812)/(100*13);
[14] => $d=(14+28649+4165)/(100*14);
[15] => $d=(15+21614+9114)/(100*15);
[16] => $d=(16+9999+17611)/(100*16);
[17] => $d=(17+25500+21672)/(100*17);
[18] => $d=(18+8613+27585)/(100*18);
[19] => $d=(19+18810+24422)/(100*19);
[20] => $d=(20+9515+25255)/(100*20);
[21] => $d=(21+7560+4948)/(100*21);
)
если сделать так: echo eval($formula3[5]); то выдает такое: "Parse error: syntax error, unexpected '<' in Z:\home\formater\www\formula.php(93) : eval()'d code on line 1" . Подскажите, пожалуйста, как eval()'ом это можно посчитать.
Вот сам скрипт:
<?php
/**
* @author
* @copyright 2012
*/
$formuls=file_get_contents("C:/1/forms.txt");
$sama_formula=array();
$name=array();
$result=array();
$general=array();
preg_match_all('#<formula>.*?<\/formula>#ims', $formuls, $arr);
foreach($arr as $t=>$v)
{
foreach($v as $arr)
{
$sama_formula[]=$arr;
}
}
for($i=0; $i<count($sama_formula); $i++)
{
preg_match_all('#<name>.*?<\/name>#ims', $sama_formula[$i], $arr);
foreach($arr as $t=>$v)
{
foreach($v as $arr)
{
$name[]=$arr;
}
}
}
for($i=0; $i<count($sama_formula); $i++)
{
preg_match_all('#<general>.*?<\/general>#ims', $sama_formula[$i], $arr);
foreach($arr as $t=>$v)
{
foreach($v as $arr)
{
$general[]=$arr;
}
}
}
$a=array();
for($i=0; $i<100; $i++)
{
$a[]=$i;
}
for($i=0; $i<100; $i++)
{
$b[]=rand();
}
for($i=0; $i<100; $i++)
{
$c[]=rand();
}
$formula=array();
$formula1=array();
$formula2=array();
$formula3=array();
for($t=0; $t<count($general); $t++)
{
for($i=0; $i<count($a); $i++)
{
$formula[$t][$i]=$general[$t];
}
}
foreach($formula as $t=>$v)
{
for($i=0; $i<count($v); $i++)
{
$formula1[]=preg_replace('#\$a#ims', $a[$i], $v[$i]);
}
for($i=0; $i<count($v); $i++)
{
$formula2[]=preg_replace('#\$b#ims', $b[$i], $formula1[$i]);
}
for($i=0; $i<count($v); $i++)
{
$formula3[]=preg_replace('#\$c#ims', $c[$i], $formula2[$i]);
}
}
echo eval($formula3[5]);
?>
Вот файл с формулами:
<formula>
<name>
Сложение
</name>
<general>
echo $d=($a+$b+$c)/(100*$a);
</general>
</formula>
<formula>
<name>
Вычитание
</name>
<general>
echo $d=($a-$b-$c)/(100*$a);
</general>
</formula>
<formula>
<name>
умножение
</name>
<general>
echo $d=($a*$b*$c)/(100*$a);
</general>
</formula>
Подскажите, пожалуйста, где моя ошибка. Спасибо
Спустя 51 минута, 24 секунды (22.05.2012 - 14:41) Renden написал(а):
alex_a
Оформите код пожалуйста в теги php
Зы мб так надо?
Оформите код пожалуйста в теги php
Зы мб так надо?
eval('?>'. $formula3[5] .'<?php ');
Спустя 13 минут, 25 секунд (22.05.2012 - 14:55) alex_a написал(а):
Цитата (Renden @ 22.05.2012 - 11:41) |
alex_a Оформите код пожалуйста в теги php Зы мб так надо? eval('?>'. $formula3[5] .'<?php '); |
Спасибо за ответ. Хотел Вам плюс в репу поставить, но не смог из-за запретов админов сайта. Вопрос решил - просто в эвал передавался тег <general>. Удалил, все стало отлично
Спустя 4 минуты, 40 секунд (22.05.2012 - 14:59) Renden написал(а):
alex_a
На вашем месте яб почитал про XML PHP, все гораздо проще и красивее можно реализовать.
На вашем месте яб почитал про XML PHP, все гораздо проще и красивее можно реализовать.