Php 服务器日志中出现错误…如何停止?

Php 服务器日志中出现错误…如何停止?,php,arrays,foreach,invalid-argument,Php,Arrays,Foreach,Invalid Argument,我犯了一个错误,我用谷歌搜索了我能想到的所有东西,几乎没有任何见解。也许你可以帮我换一双新眼睛 我有一个返回对象数组的函数。调用此函数的代码随后在该数组中循环,并对每个对象执行它需要执行的操作。当它吐出HTML时,它似乎可以直观地工作,但服务器日志仍然给出一个错误“为foreach()提供的参数无效”。是的,这在技术上很好,但我不想再出现这个错误了。想法 <?php // The class whose method returns an array of library_Label o

我犯了一个错误,我用谷歌搜索了我能想到的所有东西,几乎没有任何见解。也许你可以帮我换一双新眼睛

我有一个返回对象数组的函数。调用此函数的代码随后在该数组中循环,并对每个对象执行它需要执行的操作。当它吐出HTML时,它似乎可以直观地工作,但服务器日志仍然给出一个错误“为foreach()提供的参数无效”。是的,这在技术上很好,但我不想再出现这个错误了。想法

<?php

// The class whose method returns an array of library_Label objects
class library_Label
{
  public $id = null;
  public $name = null;

  public function getChildren()
  {
    // $children is declared earlier
    return $children;
  }
}


// main code
$columns = new library_Label(1);
foreach ($columns->getChildren() as $label) echo $label->Name;

?>

您没有说您正在使用哪种语言,但这看起来像是一个PHP错误。如果是这样,请查看PHP的。不过,您可能实际上应该更改php.ini中的值,这样就不会将其他错误转储到服务器日志中


当然,您会想知道为什么会抛出该错误。

您没有说您使用的是什么语言,但这看起来像是一个PHP错误。如果是这样,请查看PHP的。不过,您可能实际上应该更改php.ini中的值,这样就不会将其他错误转储到服务器日志中

当然,您需要找出抛出该错误的原因。

当您尝试对非数组的变量执行
foreach
时,会出现警告
“为foreach()提供的参数无效”

您需要检查
getChildren()
的返回值是否为数组

我们无法从上下文中区分这一点,因为您既没有提供构造函数源代码,也没有提供实际创建
$children
的代码。如果这是即将到来的,它可能会更容易帮助你

您可以尝试的一件事是在执行
foreach
之前,使用
的“print\r($columns->getChildren())”
打印出返回值。这应该清楚地表明它是否是一个数组

我还建议使用
empty()
count()
检查数组是否为空-网络上的一些站点声明空数组也会导致此警告,但我家中没有PHP环境来测试此警告。

警告
“为foreach()提供的参数无效”
当您尝试对非数组的变量执行
foreach
时发生

您需要检查
getChildren()
的返回值是否为数组

我们无法从上下文中区分这一点,因为您既没有提供构造函数源代码,也没有提供实际创建
$children
的代码。如果这是即将到来的,它可能会更容易帮助你

您可以尝试的一件事是在执行
foreach
之前,使用
的“print\r($columns->getChildren())”
打印出返回值。这应该清楚地表明它是否是一个数组


我还建议使用
empty()
count()
检查数组是否为空-网络上的一些站点表示,空数组也会导致此警告,但我家里没有PHP环境来测试此警告。

这是很常见的,我的解决方案总是改变这一点:

foreach ($columns->getChildren() as $label) echo $label->Name;

它应该涵盖所有情况


您也可以将其扩展为带大括号的完整if语句,然后包括else块,以处理子项为空时的情况。

这是很常见的,我的解决方案总是更改这一点:

foreach ($columns->getChildren() as $label) echo $label->Name;

它应该涵盖所有情况


您也可以将其扩展为带大括号的完整if语句,然后包括一个else块,以处理子项为空的情况。

请给我们看一些代码好吗?特别是,返回的内容和foreach的外观。无代码。。。甚至连语言都没有!它是PHP。对不起,这似乎是一个重要的信息,不是吗?你能给我们看一些代码吗?特别是,返回的内容和foreach的外观。无代码。。。甚至连语言都没有!它是PHP。对不起,这似乎是一个重要的信息,不是吗?