Я получаю эту ошибку, и я не могу сделать ни голову, ни хвост.
Точное сообщение об ошибке:
Неустранимая ошибка: невозможно использовать возвращаемое значение функции в контексте записи в /home/curricle/public_html/descarga/index.php в строке 48
Строка 48:
if (isset($_POST('sms_code') == TRUE ) {
Что здесь может происходить?
Вот полная функция:
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);
}
php
fatal-error
cfischer
источник
источник
$state
не будет изменено, нет необходимости сбрасывать его,NOTHING_SUBMITED
если это уже то значение.Ответы:
Ты имеешь в виду
хотя кстати ты действительно имеешь ввиду
источник
if (isset($_POST['sms_code']) === TRUE ) {
:-)Это также происходит при использовании empty в функции return:
потому что empty - это не функция, а языковая конструкция (не уверен), и она принимает только переменные:
Правильно:
Неправильно:
Начиная с PHP 5.5, он поддерживает больше, чем переменные. Но если вам нужно до 5.5, используйте
trim($name) == false
. Из пустой документации .источник
empty()
самом деле это не функция; это языковая конструкция, какecho
. Парсер PHP обрабатывает языковые конструкции по-разному. В случаеempty
, он смотрит на параметр как на переменную, а не на то, что нужно оценивать, поэтому, если вы попытаетесь передать функцию, она сломается. По крайней мере, это мое понимание этого. Больше информации здесь и здесь .function mTEE($val){ return empty($val); }
изменить эту строку на
Вы используете круглые скобки () для,
$_POST
но вы хотели квадратные скобки []:)
ИЛИ
источник
для WORDPRESS :
вместо того:
должно быть:
источник
Правильный синтаксис (в конце у вас не было скобок):
ps вам не нужна
== TRUE
часть, потому что BOOLEAN (true / false) уже возвращается.источник
Это может произойти в более чем одном сценарии, ниже приведен список хорошо известных сценариев:
// используя круглые скобки для доступа к элементу массива, круглые скобки используются для вызова функции
Это также может быть вызвано, когда мы пытаемся увеличить результат функции, как показано ниже:
источник
if(i++)
, это может выглядеть короче, чем увеличивать счетчик и затем оценивать его значение, но это вызовет у вас головную боль, если он когда-нибудь выйдет из строя. Редактировать: Я не имею в виду, что вы делаете это, просто указываю на это новым программистам, читающим ответ и думающим, что это изящная вещь, чтобы увеличивать значения при вычислении или оценке того, что увеличивается.=
вместо==
оператора if.Проблема в том, что
()
вам нужно идти[]
по
источник
У меня тоже была похожая проблема, как у тебя. Проблема в том, что вы используете старую версию php. Я обновил до PHP 5.6 и проблема больше не существует.
источник
Другой сценарий, где эта ошибка вызвана синтаксической ошибкой:
источник
ucwords
возвращают строку и контекст вызова неверен, если вы попытаетесь, например, с помощью$Test = ''; ${ucwords('test')} = 'String new !'; echo $Test;
, а затем показать вам новое назначенное значение.Я также столкнулся с этой проблемой из-за синтаксической ошибки. Использование "(" вместо "[" в индексе массива:
источник
Эта ошибка совершенно правильная и подчеркивает проблему контекстного синтаксиса. Может быть воспроизведен путем выполнения любого вида «не присваиваемого» синтаксиса. Например:
Синтаксис функции ($ hello) {.... затем попытайтесь вызвать функцию как свойство и присвоить значение .... $ this-> Syntax ('Hello') = 'World';
Вышеуказанная ошибка будет выдана, потому что синтаксически утверждение неверно. Правильное назначение «Мир» не может быть написано в контексте, который вы использовали (т.е. синтаксически неверно для этого контекста). «Невозможно использовать возвращаемое значение функции» или может прочитать «Невозможно назначить правое значение функции, потому что она доступна только для чтения»
Конкретная ошибка в коде OP является выделенной, используя квадратные скобки вместо квадратных.
источник
Может быть вызвано неправильным оператором =, когда это должно быть ==
Этот код выдает эту ошибку
Обратите внимание, что = является оператором присваивания, а не оператором сравнения. Исправить это изменить = на ==.
источник