// Процедурные Работы !!
$x=0;
$e1=$x/450+1/2; $e2=$x==0?false:6300/$x;
while($e1 !== $e2){
++$x;
$e1=$x/450+1/2; $e2=$x==0?false:6300/$x;
if($e1 == $e2){
echo "x Solution: ". $x . "<br>y Solution: ".$e1;
exit;
}
}
// Сбой функции на e2 ПОЧЕМУ ????? Я закончил стучать головой об стену на этом. Я исследовал Eval, но я не знаю, почему E2 не удается ….
function eSolver($eq1,$eq2){
$x=0;
$e1=eval("return $eq1;"); $e2=eval("return $eq2;");
/*
while($e1 !== $e2){
++$x;
$e1=$eq1; $e2=$eq2;
if($e1 == $e2){
$ePoint= "x Solution: ". $x . "<br>y Solution: ".$e1;
exit;
}
}
*/
return $e2;
}
$supply=$x/450+1/2; $demand=$x==0?false:6300/$x;
echo eSolver($supply,$demand);
// e1 работает не e2 и если e2 не работает, вся функция бессмысленна.
Когда ты сказал
$supply=$x/450+1/2; $demand=$x==0?false:6300/$x;
эти значения вычисляются тут же, а не внутри функции. Вам нужно обернуть их, будь то в кавычки, чтобы перейти к eval
(ick) или в анонимной функции.
$supply = function($x) { return $x/450 + 1/2; };
$demand = function($x) { return ($x == 0) ? false : 6300/$x; };
Как только они лямбда, вам не нужно eval
что угодно — и на самом деле, я не уверен, что ты даже можешь. Так что избавься от eval
s.
Теперь в вашем цикле eSolver
можно сказать как
$e1 = $eq1($x); $e2 = $eq2($x);
оценить их.
Других решений пока нет …