Weird PHP error: "Невозможно использовать возвращаемое значение функции в контексте записи"

Я получаю эту ошибку, и я не могу сделать ее или хвост.

Точное сообщение об ошибке:

Неустранимая ошибка: нельзя использовать функцию return значение в контексте записи в /home/curricle/public _html/descarga/index.php on line 48

Строка 48:

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

Кто-нибудь знает, что происходит???

PS Здесь полная функция, если она помогает:

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

Вы имеете в виду

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

хотя, кстати, вы действительно имеете в виду

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

Ответ 2

Это также происходит при использовании пустого элемента при возврате функции:

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

потому что empty не является функцией, а конструкцией языка (не уверен), и она принимает только переменные:

Справа:

empty($someVar)

Неверно:

empty(someFunc())

С PHP 5.5 он поддерживает больше, чем переменные. Но если вам это нужно до 5.5, используйте trim($name) == false. Из пустой документации.

Ответ 3

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

измените эту строку на

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

Вы используете parentheseis() для $_POST, но вам нужны квадратные скобки []

:)

ИЛИ

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

Ответ 4

Правильный синтаксис (в конце у вас отсутствовали скобки):

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

p.s. вам не нужна часть == TRUE, потому что BOOLEAN (true/false) уже возвращается.

Ответ 5

для WORDPRESS:

вместо:

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

должен быть:

if (!get_option('smth'))

Ответ 6

Это может произойти в более чем одном сценарии, ниже приведен список известных сценариев:

// 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.

Ответ 7

Проблема в () вам нужно пойти []

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

по

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

Ответ 8

У меня также была аналогичная проблема, подобная вашей. Проблема в том, что вы используете старую версию php. Я обновился до PHP 5.6, и проблема больше не существует.

Ответ 9

Другой сценарий, в котором эта ошибка возникает из-за синтаксической ошибки:

ucwords($variable) = $string;

Ответ 10

i также столкнулся с этой проблемой из-за ошибки синтаксиса. Использование "(" вместо "[" в индексе массива:

   foreach($arr_parameters as $arr_key=>$arr_value) {
        $arr_named_parameters(":$arr_key") = $arr_value;
    }

Ответ 11

Функция tracker_printcomments ($ issueid) {   глобальные $CFG, $DB;

$comments = $DB->get_records('tracker_issuecomment', array('issueid' => $issueid), 'datecreated');
//print_object($issueid);

//print_object ($ comments);        $ Cmnt = '';   if ($ comments)   {

    foreach ($comments as $comment)
    {

        $user = $DB->get_record('user', array('id' => $comment->userid));
        $cmnt .= '<tr>';
        $cmnt .=  '<td valign="top" class="commenter" width="30%">';
        $cmnt .= tracker_print_user($user); //2
        $cmnt .= '<br/>';
        $cmnt .= '<span class="timelabel">'.userdate($comment->datecreated).'</span>';
        $cmnt .= '</td>';
        $cmnt .= '<td colspan="3" valign="top" align="left" class="comment">';
        //echo '<td colspan="3"  valign="bottom" align="left" class="alinks">' ;

         if($comment->attachmentid)
         $attachment= $DB->get_records_sql("SELECT * FROM {files} WHERE filename != '.' AND itemid =$comment->attachmentid");
         $cmnt .= $comment->comment;
         //print_object($attachment);

         //echo '<span colspan="3" valign="bottom" align="left" class="alinks">';
        if(!empty($attachment))
        {
            $out = array();
            $fs = get_file_storage();
            foreach($attachment as $attachments)
            {
            $files = $fs->get_area_files($attachments->contextid, 'user', 'draft',$comment->attachmentid, 'id', false);
            }
            foreach($files as $file)
            {
                $filename = $file->get_filename();
                $ctxid = $file->get_contextid();
                $component = $file->get_component();
                $itemid = $file->get_itemid();
                $url = $CFG->wwwroot."/draftfile.php/$ctxid/user/draft/$itemid/$filename";

                $out[] = html_writer::link($url, $filename);
             }
          $br = html_writer::empty_tag('br');
          $cmnt .= implode($br, $out);
         }

        //$cmnt= $comment->comment;
       // $cmnt= '</span>';
        $cmnt .= '</td>';
        $cmnt .= '</tr>';
    }

}

return $cmnt;
}

Am также получает ту же ошибку для этой функции

Невозможно использовать возвращаемое значение функции в контексте записи