제 목표는 if() 문에 복잡한 논리를 넣는 것입니다. 배열에 값이 배열되어 있고 배열의 모든 항목이 0이 아닌 경우 약간의 코드를 실행한다고 가정 해 보겠습니다. 일반적으로 $valid = true
, foreach
내 배열이라고 할 수 있으며 0이 발견되면 $valid = false
을 설정합니다. 그런 다음 내 코드 if ($valid)
을 실행합니다. 또는 내 루프를 함수에 넣고 함수를 내 if()
에 넣을 수도 있습니다.IF 문에서 PHP 클로저가 반환하는 것은 무엇입니까?
그러나 나는 게으르다. 그래서 나는 "유효한"플래그를 잔뜩 들고 싶지 않고 한 곳에서만 사용되는 완전히 새로운 기능을 쓰지 않을 것이다. 나는 if
이 true로 평가되는 'foo'
를 얻을 것으로 기대하고 있었다
if ($q = function() { return 'foo'; }) {
echo $q;
}
else {
echo 'false';
}
:
그래서 말을하자 나는이 있습니다. 내 클로저는 $q
으로 커밋되고 문이 실행됩니다. $q
은 문자열 foo
을 반환하고 'foo'가 인쇄됩니다.
대신 Object of class Closure could not be converted to string
이 표시됩니다.
그럼 대신 해보자 : 내 기능은 거짓과 '사실'이 인쇄 될 것입니다 반환 것이라고 예상하고 있었다
if (function() { return false; }) {
echo 'foo';
}
else {
echo 'true';
}
. 대신 'foo'가 인쇄됩니다.
내가이 문제에 대해 어떻게 생각하니? 그것은 말하고있는 것처럼 보입니다. "네, 확실히 기능입니다!" "No"대신에 "false"로 평가 되었기 때문입니다. 내가하려는 일을 할 수있는 방법이 있습니까?
함수와 반환 값을 혼동하는 것처럼 보입니다. – delnan
필자가 원했던 것은 if (function() {return false;}()) {{}가 자바 스크립트에서는 유효하지만 PHP에서는 유효하지 않다고 가정합니다. – ajp5103
http://stackoverflow.com/questions/3568410/anonymous-functions-that-execute-immediately call_user_func()는 내가 찾고있는 것입니다. – ajp5103