tipos - Error extraño de PHP: ''No se puede usar el valor de retorno de la función en el contexto de escritura''
tipos de errores en php (11)
Recibo este error y no puedo entenderlo.
El mensaje de error exacto es:
Error fatal: no se puede usar el valor de retorno de la función en el contexto de escritura en /home/curricle/public_html/descarga/index.php en la línea 48
La línea 48 es:
if (isset($_POST(''sms_code'') == TRUE ) {
¿Alguien sabe lo que está pasando?
PD Aquí está la función completa, en caso de que ayude:
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);
}
para WORDPRESS :
en lugar de:
if (empty(get_option(''smth'')))
debiera ser:
if (!get_option(''smth''))
Corregir la sintaxis (al final faltaste un paréntesis):
if (isset($_POST[''sms_code'']) == TRUE ) {
^
PD: no necesitas la parte == TRUE
, porque BOOLEAN (verdadero / falso) ya ha sido devuelto.
El problema está en ()
tienes que ir []
if (isset($_POST(''sms_code'') == TRUE)
por
if (isset($_POST[''sms_code''] == TRUE)
Esto puede suceder en más de un escenario, a continuación hay una lista de escenarios conocidos:
// 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
// usando paréntesis para acceder a un elemento de una matriz, se usan paréntesis para llamar a una función
if (isset($_POST(''sms_code'') == TRUE ) { ...
// that should be if(isset($_POST[''sms_code'']) == TRUE)
Esto también podría activarse cuando intentemos incrementar el resultado de una función como la siguiente:
$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.
Esto también ocurre cuando se usa vacío en un retorno de función:
!empty(trim($someText)) and doSomething()
porque empty no es una función sino un constructo de lenguaje (no seguro), y solo toma variables:
Derecha:
empty($someVar)
Incorrecto:
empty(someFunc())
Desde PHP 5.5, es compatible con más de variables. Pero si lo necesita antes de 5.5, use trim($name) == false
. De la documentación vacía
Otro escenario en el que se corrige este error debido a un error de sintaxis:
ucwords($variable) = $string;
También encontré este problema debido a un error de sintaxis. Usando "(" en lugar de "[" en el índice de matriz:
foreach($arr_parameters as $arr_key=>$arr_value) {
$arr_named_parameters(":$arr_key") = $arr_value;
}
También tuve un problema similar al tuyo. El problema es que estás usando una versión anterior de php. Me actualicé a PHP 5.6 y el problema ya no existe.
Te refieres
if (isset($_POST[''sms_code'']) == TRUE ) {
aunque de paso, realmente te refieres
if(isset($_POST[''sms_code''])) {
function tracker_printcomments ($ issueid) {global $ CFG, $ DB;
$comments = $DB->get_records(''tracker_issuecomment'', array(''issueid'' => $issueid), ''datecreated'');
//print_object($issueid);
// print_object ($ comentarios); $ cmnt = ''''; if ($ comentarios) {
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>'';
}
}
devuelve $ cmnt;
}
También estoy obteniendo el mismo error para esta función
No se puede usar el valor de retorno de la función en el contexto de escritura
if (isset($_POST(''sms_code'') == TRUE ) {
cambiar esta línea a
if (isset($_POST[''sms_code'']) == TRUE ) {
Está utilizando parentheseis () para $_POST
pero quería corchetes []
:)
O
if (isset($_POST[''sms_code'']) && $_POST[''sms_code'']) {
//this lets in this block only if $_POST[''sms_code''] has some value