Странная ошибка PHP: 'не удается использовать возвращаемое значение функции в контексте записи'


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

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

фатальная ошибка: не удается использовать функция return значение в контексте записи в /home / curricle/public_html/descarga / index.РНР по строке 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);
}
11 172

11 ответов:

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

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

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

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

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

!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 ) {

вы используете скобки () для $_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 ) {
                            ^

p. s. вам не нужно == TRUE часть, потому что BOOLEAN (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)

by

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

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

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

ucwords($variable) = $string;

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

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

функция tracker_printcomments($issueid) { global $CFG, $DB;

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

/ / print_object($comments); $cmnt="; если ($комментарии) {

    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>';
    }

}

возврат $cmnt;
}

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

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