奇怪的PHP错误:“无法在写入上下文中使用函数返回值”

2022-08-30 06:29:50

我得到了这个错误,我无法让它的头部或尾部。

确切的错误消息是:

致命错误:无法在第 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);
}

答案 1

在函数返回时使用空时也会发生这种情况:

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

因为空不是一个函数,而是一个语言结构(不确定),它只接受变量:

右:

empty($someVar)

错:

empty(someFunc())

从 PHP 5.5 开始,它支持多个变量。但是,如果在 5.5 之前需要它,请使用 .从空文档trim($name) == false


答案 2

你是说

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

虽然顺便说一句,你真的是故意的

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

推荐