Intereting Posts

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

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

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

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

Ты имеешь в виду

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

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

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

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

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

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

Правильно:

 empty($someVar) 

Неправильно:

 empty(someFunc()) 

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

 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 

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

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

ps вам не нужна == TRUE part, потому что BOOLEAN (true / false) уже возвращен.

для WORDPRESS :

вместо:

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

должно быть:

 if (!get_option('smth')) 

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

 // 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, и проблема больше не существует.

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

 ucwords($variable) = $string; 

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

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

function tracker_printcomments ($ issueid) {global $ 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;
}

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

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