Fatal error: Can’t use function return value in write context in C:\xampp\htdocs\index.php on line 7

Wer entweder die Meldung

Fatal error: Can’t use function return value in write context in C:\xampp\htdocs\index.php on line 7

oder

Fatal error: Can’t use function return value in write context in C:\xampp\htdocs\index.php on line 7

in einem Skript erhält, möchte einen Rückgabewert einer Funktion bzw. den Rückgabewert einer Methode in einer Funktion wie z.B. empty() verwenden.

Reproduktion des Fehlers

Dieses Beispiel erzeugt den Fehler:

error_reporting(E_ALL);
ini_set("display_errors", true);

$string = "mein string";

if(empty(trim($string)))
{
  echo "ist leer";
}
else
{
  echo "ist nicht leer";
}

empty() ist eine der Funktionen, die keine Rückgabewerte, sondern nur Variablen annimmt. Der Grund dafür ist mir aber nicht bekannt…

Problemlösung

Die Problemlösung ist in diesem Fall mal wieder extrem einfach. Wir verwenden einfach eine kleine Hilfsvariable!

error_reporting(E_ALL);
ini_set("display_errors", true);

$string = "mein string";
$hlp = trim($string);

if(empty($hlp))
{
  echo "ist leer";
}
else
{
  echo "ist nicht leer";
}

Die Funktion trim() wird jetzt auf $string angewandt und der Rückgabewert von trim() im Gegensatz zum fehlerhaften Codebeispiel nicht an empty() übergeben, sondern in eine Variable geschrieben. Diese Variable wird dann mit empty() geprüft.

Andere PHP-Fehlermeldungen

Häufige PHP-Fehlermeldungen und deren Behebung

1 Star2 Stars3 Stars4 Stars5 Stars (Wurde noch nicht bewertet)
Loading...


5 Kommentare zu “Fatal error: Can’t use function return value in write context in C:\xampp\htdocs\index.php on line 7”

  1. Laut php.net liegt das ganze daran das empty() keine Funktion sondern ein Sprachkonstrukt ist… was auch immer das genau bedeutet 😉

    http://php.net/manual/de/function.empty.php

  2. Laut php.net liegt das daran, dass empty() keine Funktion sondern ein Sprachkonstrukt ist… was auch immer das bedeutet 😉

    http://php.net/manual/de/function.empty.php

  3. Naja, also echo ist ja auch ein Sprachkonstrukt und echo kann mit Rückgabewerten von Funktionen arbeiten 🙂

  4. da $string eine variable ist, spricht nichts dagegen auch diese wieder zu überschreiben.
    $string = „mein string“;
    $string = trim($string);

    oder aber per wrapperfunktion

    function isempty($str) {
    return empty($str);
    }

    if(isempty(trim($str)))
    echo „ist leer“;
    else
    echo „ist nicht leer“;

  5. […] Fragen hätte ich gerne von Betrachtungsweise.eu, Gucky, Simon und wirbelwebber beantwortet. Ich bin schon auf die Antworten gespannt. Falls einer von euch dieses […]

Hinterlasse einen Kommentar!

Time limit is exhausted. Please reload the CAPTCHA.

»Informationen zum Artikel

Autor: Simon
Datum: 28.07.2009
Zeit: 15:00 Uhr
Kategorien: Fehlermeldungen
Gelesen: 8672x heute: 3x

Kommentare: RSS 2.0.
Diesen Artikel kommentieren oder einen Trackback senden.

»Meta