奇怪的PHP错误:'不能在写入上下文中使用函数返回值'
我得到这个错误,我不能做它的头或尾巴。
确切的错误信息是:
致命错误:无法在第48行的/home/curricle/public_html/descarga/index.php中的写入上下文中使用函数返回值
48行是:
if (isset($_POST('sms_code') == TRUE ) { 任何人都知道发生了什么?
PS这是完整的function,以防万一:
 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'])) { 
在函数return上使用空时也会发生这种情况:
 !empty(trim($someText)) and doSomething() 
因为空不是一个函数,而是一个语言结构(不确定),它只需要variables:
对:
 empty($someVar) 
错误:
 empty(someFunc()) 
 自PHP 5.5以来,它支持更多的variables。 但是如果你在5.5之前需要它,使用trim($name) == false 。 从空文档 。 
 if (isset($_POST('sms_code') == TRUE ) { 
改变这一行
 if (isset($_POST['sms_code']) == TRUE ) { 
 你正在使用$_POST parentheseis(),但你想方括号[] 
🙂
要么
 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是一样的:
 if (isset($_POST['sms_code'])) { 
因为isset返回一个布尔值。
为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,问题不复存在。
由于语法错误,我也遇到了这个问题。 在数组索引中使用“(”而不是“[”
  foreach($arr_parameters as $arr_key=>$arr_value) { $arr_named_parameters(":$arr_key") = $arr_value; } 
由于语法错误导致此错误被触发的另一种情况:
 ucwords($variable) = $string; 
函数tracker_printcomments($ issueid){global $ CFG,$ DB;
 $comments = $DB->get_records('tracker_issuecomment', array('issueid' => $issueid), 'datecreated'); //print_object($issueid); 
// print_object($ comments); $ CMNT = ''; 如果($ 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>'; } } 
 返回$ cmnt; 
  } 
我也得到这个function相同的错误
在写入上下文中不能使用函数返回值