2011-09-28 5 views
1

empty(strip_tags($string))과 함께 할당을 시도 할 때 Can't use function return value in write context 오류가 발생했습니다. 그래서 테스트를 위해 과제와 3 진 성명을 삭제했습니다. 하지만 필자는 분명히 쓰기 문맥에 있지 않을 때 여전히이 오류가 발생합니다.쓰지 않을 때 strip_tags()는 "쓰기 문맥에서 함수 반환 값을 사용할 수 없습니다."

생각해 보니, 무엇을 의미하는지 모르겠다. write context 의미 - 나는 그것이 과제와 관련이 있다고 생각했지만, 나는 확실히 알고 있다고 말할 수는 없다.

내가 왜 그렇게 생각하지 않는가? 나에게 꽤 똑바로 보인다. 내가 뭘 놓치고 있니?

$ cat test.php 
<? 

$string = "<br/>"; 

if (empty(strip_tags($string))) { 
    echo "It's empty.\n"; 
} else { 
    echo "It's not empty.\n"; 
} 

$ php test.php 
PHP Fatal error: Can't use function return value in write context in test.php on line 5 

답변

5

empty()은 함수의 출력이 아닌 변수에 대한 조치가 필요합니다. 대신 출력에 strip_tags()을 변수로 저장하십시오.

$stripped = strip_tags($string); 
if (empty($stripped)) { 
    echo "It's empty.\n"; 
} else { 
    echo "It's not empty.\n"; 
} 

empty() documentation에 설명되어 있습니다 :

참고 : 다른 아무것도 구문 분석 오류가 발생합니다으로 empty()는 변수를 확인합니다. 즉, 다음은 작동하지 않습니다 : empty(trim($name)).

+0

아! 나는 그것이'strip_tags()'라고 잘못 생각했다 :) – user151841

4

empty에는 변수가 필요합니다. 함수 반환 값을 전달하면 다른 결과를 얻습니다.

if (empty((strip_tags($string)))) { 

을하지만 더 나은 like Michael wrote을,이 제안이 더러운 해킹의 일종이다

당신은 괄호로 넣어 것을 해결할 수 있습니다. 관심이있는 경우 Parentheses altering semantics of function call resultPHP Bug Report: #55222 Fatal Error disappears when using paranthesis에서 논의했습니다.

+1

+1. 괄호가 그렇게 평가할 줄은 몰랐습니다. 더러운 해킹이지만 흥미 롭습니다. –

관련 문제