PHP-Warnung Ungültiges Argument für foreach() angegeben

Sheeraz Gul 20 Juni 2023
PHP-Warnung Ungültiges Argument für foreach() angegeben

Dieses Tutorial zeigt, wie man die PHP Warnung: Ungültiges Argument für foreach() behebt.

PHP-Warnung: Ungültiges Argument für Foreach() angegeben

Bei Verwendung der foreach-Schleife in PHP kann es manchmal zu der Warnung Warning: Invalid argument provided for foreach() kommen. Diese Warnung tritt auf, wenn wir ein ungültiges Argument für die foreach-Schleife angeben.

Der häufigste Grund für diesen Fehler ist, wenn wir versuchen, einen String als Wert an die foreach-Schleife zu übergeben. Die foreach-Schleife wird verwendet, um über ein Array zu iterieren, aber wenn wir einen Wert angeben, der kein Array ist, wird die Warnung: Ungültiges Argument für foreach() geliefert ausgegeben.

Versuchen wir ein einfaches Beispiel, das diesen Fehler auslöst:

<?php
$DemoString = "Hello! This is delftstack.com";
foreach($DemoString as $DemoValue){
    echo $DemoValue;
}
?>

Der obige Code löst den Fehler Ungültiges Argument für foreach() aus, da foreach() nicht über einen String iterieren kann.

Siehe die Ausgabe:

Warning: Invalid argument supplied for foreach() in C:\Apache24\htdocs\demo.php on line 3

Wir müssen der foreach-Schleife ein Array bereitstellen, um dieses Problem zu beheben. Versuchen wir, dieses Beispiel zu beheben:

<?php
$DemoString = array("Hello!",  "This",  "is",  "delftstack.com");
foreach($DemoString as $DemoValue){
    echo $DemoValue."<br>";
}
?>

Jetzt, da wir die Zeichenfolge in ein Array geändert haben, sollte diese Warnung behoben sein. Siehe die Ausgabe:

Hello!
This
is
delftstack.com

Das Ungültige Argument für foreach() tritt nicht nur bei Strings auf, sondern jeder Wert, der nicht iterierbar ist, wie das Array, wird die gleiche Warnung ausgeben.

Hier ist ein weiteres Beispiel, in dem wir versuchen, über den Rückgabewert einer Funktion zu iterieren:

<?php
function DemoArray () {
    return false;
}

$DemoArray = DemoArray();

foreach($DemoArray as $DemoValue) {
    echo $DemoValue;
}
?>

Wie wir sehen können, gibt die Funktion DemoArray() false zurück, und wir versuchen, sie einer Variablen zuzuweisen und mit der Schleife foreach() darüber zu iterieren. Es sollte die Warnung Ungültiges Argument für foreach() ausgeben.

Siehe die Ausgabe:

Warning: Invalid argument supplied for foreach() in C:\Apache24\htdocs\demo.php on line 8

Um dieses Problem zu beheben, sollte die Methode DemoArray() idealerweise ein Array zurückgeben, aber manchmal können diese Situationen auftreten. Es ist besser, diese Situationen mit einem Standardwert zu handhaben, als das Problem wiederholt zu beheben.

Versuchen wir, diese Situation mit einem Standardwert zu behandeln:

<?php
function DemoArray() {
    return false;
}

$DemoArray = DemoArray();

if (is_array($DemoArray) || is_object($DemoArray)) {

    foreach($DemoArray as $DemoValue){
        echo $DemoValue;
    }
}
// In case the above method is not working, we set a default value in the else, or we can perform any other operations.
else  {
	$DemoArray = array("Hello!",  "This",  "is",  "delftstack.com");
    foreach($DemoArray as $DemoValue){
        echo $DemoValue."<br>";
    }
}
?>

Jetzt wird das obige Beispiel richtig behandelt. Wann immer also die Situation für die foreach-Schleife eintritt, sollten wir zumindest einen Standardwert der Fehleranweisung haben.

Siehe die Ausgabe:

Hello!
This
is
delftstack.com
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Verwandter Artikel - PHP Warning