2017-10-26 15 views
0

// 절차 작업 !!누가 세상에서 절차 코드가이 코드 시퀀스의 솔루션을 위해 작동하지만 함수가 실패하는지 왜 말해 줄 수 있습니까?

$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에서 실패 함 WHY ????? 나는 벽에 머리를 두드리는 일을 끝냈다.

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가 작동하지 않는 경우, 전체 기능은 무의미 .... 내가 평가 연구했지만 E2 실패 이유를 모르겠어요.

+0

"작품"과 "실패"를 정의하십시오. – cHao

답변

0

당신이

$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을 제거하십시오.

$e1 = $eq1($x); $e2 = $eq2($x); 

그들을 평가하기 위해 같은

지금, eSolver에서 루프 내에서, 당신은 말할 수있다.

+0

감사합니다. Javascript에서 기능적 코딩을 보았지만이를 구현할 생각은 전혀 없었습니다. 또는 PHP에서 어떻게 작동했는지 알았습니다. Javascript 익명 함수와 다른 점이 없습니다. 나는 eval() 대신 익명의 함수를 구현할 것이다. eval을 사용하여 구현할 수 없습니다. 나는 어젯밤까지 잠자리에 들기 전까지 몇 시간 동안 머물렀다. 다시 한번 고마워요! –

+0

'eval'을 사용하여 구현할 수 있지만 잘못된 방법입니다. 계산하고자하는 것을 알고있을 때, 문자열보다는 함수로서 더 낫습니다. – cHao

+0

코드 테스트를 마친 후 return 문을 true 조건으로 옮겨야했지만 절차가 제대로 작동하고 효과적이었습니다. 기능적 코딩, 아기, 나를위한 완전히 새로운 수준. 너희는 무지의 실명을 드러냈다 : D –