PHP 경고 foreach()에 잘못된 인수가 제공되었습니다.

Sheeraz Gul 2023년10월8일
PHP 경고 foreach()에 잘못된 인수가 제공되었습니다.

이 튜토리얼은 PHP 경고: foreach()에 대해 잘못된 인수가 제공됨을 수정하는 방법을 보여줍니다.

PHP 경고: Foreach()에 잘못된 인수가 제공됨

PHP에서 foreach 루프를 사용할 때 때때로 경고: foreach()에 잘못된 인수가 제공됨 경고가 발생할 수 있습니다. 이 경고는 foreach 루프에 대해 잘못된 인수를 제공할 때 발생합니다.

이 오류의 일반적인 원인은 문자열을 foreach 루프에 값으로 전달하려고 할 때입니다. foreach 루프는 배열을 반복하는 데 사용되지만 배열이 아닌 값을 제공하면 경고: foreach()에 대해 잘못된 인수가 제공됨이 발생합니다.

이 오류를 발생시키는 간단한 예를 살펴보겠습니다.

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

위의 코드는 foreach()가 문자열을 반복할 수 없기 때문에 Invalid argument provided for foreach() 오류를 발생시킵니다.

출력을 참조하십시오.

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

이 문제를 해결하려면 foreach 루프에 배열을 제공해야 합니다. 이 예를 수정해 보겠습니다.

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

이제 문자열을 배열로 변경했기 때문에 이 경고가 수정되어야 합니다. 출력을 참조하십시오.

Hello!
This
is
delftstack.com

foreach()에 제공된 잘못된 인수는 문자열에서만 발생하는 것이 아니라 배열과 같이 반복할 수 없는 값은 동일한 경고를 표시합니다.

다음은 함수의 반환 값을 반복하는 또 다른 예입니다.

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

$DemoArray = DemoArray();

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

보시다시피 DemoArray() 함수는 false를 반환하고, 이를 변수에 할당하고 foreach() 루프를 사용하여 반복하려고 시도합니다. 이것은 foreach()에 대한 유효하지 않은 인수가 제공되었습니다 경고를 발생시켜야 합니다.

출력을 참조하십시오.

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

이상적으로는 이 문제를 해결하려면 DemoArray() 메서드가 배열을 반환해야 하지만 경우에 따라 이러한 상황이 발생할 수 있습니다. 이러한 상황을 반복적으로 수정하는 것보다 기본값으로 처리하는 것이 좋습니다.

기본값을 사용하여 이 상황을 처리해 보겠습니다.

<?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>";
    }
}
?>

이제 위의 예가 제대로 처리됩니다. 따라서 foreach 루프에 대해 상황이 발생할 때마다 최소한 오류 문의 기본값이 있어야 합니다.

출력을 참조하십시오.

Hello!
This
is
delftstack.com
작가: Sheeraz Gul
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

관련 문장 - PHP Warning