HOWTO · PHP
PHP 경고 foreach()에 잘못된 인수가 제공되었습니다.
이 자습서는 foreach()에 제공된 PHP 경고 잘못된 인수를 수정하는 방법을 보여줍니다.
이 페이지의 내용
이 튜토리얼은 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