이상한 PHP 오류 : '쓰기 컨텍스트에서 기능 반환 값을 사용할 수 없습니다'

StackOverflow https://stackoverflow.com/questions/1532693

  •  20-09-2019
  •  | 
  •  

문제

이 오류가 발생하고 머리 나 꼬리를 만들 수 없습니다.

정확한 오류 메시지는 다음과 같습니다.

치명적인 오류 : 48 행에 /home/curricle/public_html/descarga/index.php에서 쓰기 컨텍스트에서 기능 반환 값을 사용할 수 없습니다.

48 행은 다음과 같습니다.

if (isset($_POST('sms_code') == TRUE ) {

아무도 무슨 일이 일어나고 있는지 아는 사람 ???

추신 : 다음은 도움이되는 경우 전체 기능이 있습니다.

function validate_sms_code() {

    $state = NOTHING_SUBMITED;

    if (isset($_POST('sms_code') == TRUE ) {
        $sms_code = clean_up($_POST('sms_code'));
        $return_code = get_sepomo_code($sms_code);

        switch($return_code) {

          case 1:
            //no error
            $state = CORRECT_CODE;
            break;

          case 2:
            // code already used
            $state = CODE_ALREADY_USED;
            break;

          case 3:
            // wrong code
            $state = WRONG_CODE;
            break;

          case 4:
            // generic error
            $state = UNKNOWN_SEPOMO_CODE;
            break;

          default:
            // unknown error
            $state = UNKNOWN_SEPOMO_CODE;
            throw new Exception('Unknown sepomo code: ' . $return_code);
            break;
        }

    } else {
        $state = NOTHING_SUBMITED;
    }
    dispatch_on_state($state);
}
도움이 되었습니까?

해결책

네 말 뜻은

if (isset($_POST['sms_code']) == TRUE ) {

우연히도 당신은 정말로 의미합니다

if(isset($_POST['sms_code'])) {

다른 팁

기능 반환에서 빈을 사용할 때도 발생합니다.

!empty(trim($someText)) and doSomething()

빈은 함수가 아니라 언어 구성 (확실하지 않음)이기 때문에 변수 만 사용하기 때문입니다.

오른쪽:

empty($someVar)

잘못된:

empty(someFunc())

PHP 5.5 이후 변수 이상의 지원을 지원합니다. 그러나 5.5 전에 필요한 경우 사용하십시오 trim($name) == false. 에서 빈 문서.

if (isset($_POST('sms_code') == TRUE ) {

이 라인을 변경하십시오

if (isset($_POST['sms_code']) == TRUE ) {

당신은 caltheseis ()를 사용하고 있습니다 $_POST 그러나 당신은 사각형 괄호를 원했습니다 [

:)

또는

if (isset($_POST['sms_code']) && $_POST['sms_code']) { 
//this lets in this block only if $_POST['sms_code'] has some value 

~을 위한 WordPress:

대신에:

if (empty(get_option('smth')))

해야한다:

if (!get_option('smth'))

올바른 구문 (결국 괄호가 누락되어 있음) :

if (isset($_POST['sms_code']) == TRUE ) {
                            ^

추신 당신은 필요하지 않습니다 == TRUE 부울 (true/false)이 이미 반환되었으므로 파트.

이것은 하나 이상의 시나리오에서 발생할 수 있습니다. 아래는 잘 알려진 시나리오 목록입니다.

// calling empty on a function 
empty(myFunction($myVariable)); // the return value of myFunction should be saved into a variable
// then you can use empty on your variable

// 괄호를 사용하여 배열의 요소에 액세스하는 경우 괄호는 함수를 호출하는 데 사용됩니다.

if (isset($_POST('sms_code') == TRUE ) { ...
// that should be if(isset($_POST['sms_code']) == TRUE)

아래와 같은 기능의 결과를 증가 시키려고 할 때도 트리거 될 수 있습니다.

$myCounter = '356';

$myCounter = intVal($myCounter)++; // we try to increment the result of the intVal...
// like the first case, the ++ needs to be called on a variable, a variable should hold the the return of the function then we can call ++ operator on it.

문제는 () 당신은 가야합니다 []

if (isset($_POST('sms_code') == TRUE)

~에 의해

if (isset($_POST['sms_code'] == TRUE)

나는 또한 당신과 비슷한 문제가있었습니다. 문제는 이전 PHP 버전을 사용하고 있다는 것입니다. PHP 5.6으로 업그레이드했으며 문제가 더 이상 존재하지 않습니다.

이 오류가 Trigered Due Syntax 오류 인 또 다른 시나리오 :

ucwords($variable) = $string;

또한 구문 오류로 인해이 문제가 발생했습니다. Array Index에서 ["대신 "("대신 사용 :

   foreach($arr_parameters as $arr_key=>$arr_value) {
        $arr_named_parameters(":$arr_key") = $arr_value;
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top