Weird PHP fout: ‘Kan geen gebruik maken van de functie return waarde in write context’

Ik krijg deze foutmelding en ik kan er geen kop of staart van maken.

Het exacte foutbericht is:

FATALE FOUT: kan geen functie-return gebruiken
waarde in schrijfcontext in
/home/curricle/public_html/descarga/index.php
op regel 48

Lijn 48 is:

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

Wat kan hier gaan?

Hier is de volledige functie:

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

Antwoord 1, Autoriteit 100%

u bedoelt

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

Hoewel je overigens echt bedoelt

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

Antwoord 2, Autoriteit 439%

Dit gebeurt ook wanneer u leeg bent op een functie-rendement:

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

Omdat leeg geen functie is, maar een taalconstruct (niet zeker), en het kost alleen variabelen:

RECHTS:

empty($someVar)

verkeerd:

empty(someFunc())

Sinds PHP 5.5 ondersteunt het meer dan variabelen. Maar als u het nodig hebt vóór 5.5, gebruikt u trim($name) == false. Van lege documentatie .


Antwoord 3, Autoriteit 20%

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

Wijzig deze regel naar

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

U gebruikt ParentHeseis () voor $_POSTmaar u wilde vierkante haakjes []

🙂

of

if (isset($_POST['sms_code']) && $_POST['sms_code']) { 
//this lets in this block only if $_POST['sms_code'] has some value 

Antwoord 4, Autoriteit 12%

Voor WordPress :

In plaats van:

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

zou moeten zijn:

if (!get_option('smth'))

Antwoord 5, autoriteit 10%

Correcte syntaxis (u had uiteindelijk haakjes):

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

ps. je hebt het == TRUEgedeelte niet nodig, omdat BOOLEAN (true/false) al wordt geretourneerd.


Antwoord 6, autoriteit 4%

Dit kan in meer dan één scenario gebeuren, hieronder is een lijst met bekende scenario’s:

// 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

// haakjes gebruiken om toegang te krijgen tot een element van een array, haakjes worden gebruikt om een functie aan te roepen

if (isset($_POST('sms_code') == TRUE ) { ...
// that should be if(isset($_POST['sms_code']) == TRUE)

Dit kan ook worden geactiveerd wanneer we proberen het resultaat van een functie zoals hieronder te verhogen:

$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.

Antwoord 7, autoriteit 3%

Het probleem zit in de ()die je moet gaan []

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

door

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

Antwoord 8, autoriteit 3%

Ik had ook een vergelijkbaar probleem zoals de jouwe. Het probleem is dat u een oude PHP-versie gebruikt. Ik heb een upgrade naar PHP 5.6 en het probleem bestaat niet meer.


Antwoord 9

Nog een scenario waar deze fout is getreuggerd Due Syntaxisfout:

ucwords($variable) = $string;

Antwoord 10

Ik liep ook dit probleem op vanwege de syntaxisfout. “(” Gebruiken in plaats van “[” in Array Index:

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

Antwoord 11

Deze fout is vrij goed en benadrukt een contextueel syntaxis-probleem. Kan worden gereproduceerd door het uitvoeren van een soort “niet-toewijsbare” syntaxis. Bijvoorbeeld:

Functie Syntaxis ($ Hallo) {…. Probeer vervolgens de functie te bellen als een eigenschap en een waarde toewijzen …. $ This- & GT; Syntaxis (‘Hallo’) = ‘Wereld’;

De bovenstaande fout zal worden gegooid omdat syntactisch de verklaring verkeerd is. De juiste toewijzing van ‘World’ kan niet worden geschreven in de context die u hebt gebruikt (d.w.z. syntactisch onjuist voor deze context). ‘Kan de functie van de functie retourneren niet gebruiken of het kan lezen’ kan de rechterwaarde niet toewijzen aan de functie omdat het alleen-lezen ‘

De specifieke fout in de OPS-code is zoals gemarkeerd, met behulp van haakjes in plaats van vierkante haakjes.


Antwoord 12

kan veroorzaken door verkeerde operator, =, wanneer het moet zijn ==

if(mysql_num_rows($result) = 1)
    return $result;
else
    return false;

Deze code gooit deze fout

Merk op dat = is toewijzingsoperator en geen vergelijkingsoperator. Fix is ​​om te veranderen = tot ==.

Other episodes