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
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
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
Naja, also echo ist ja auch ein Sprachkonstrukt und echo kann mit Rückgabewerten von Funktionen arbeiten 🙂
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“;
[…] 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 […]