如何解决PHP致命错误:未捕获的错误:调用未定义的函数each()?

How to solve a PHP Fatal error: Uncaught Error: Call to undefined function each()?

提问人:Maurits 提问时间:12/2/2022 更新时间:3/3/2023 访问量:1729

问:

自从迁移到 PHP 8 后,下面的代码给了我错误“PHP 致命错误:未捕获的错误:调用未定义的函数 each()...”

public function Seek($ArrangementID)
{
    $this->populate();
    $bFound= false;
    reset($this->Arrangementen);
    while (!$bFound && (list($i, $oArrangement) = each ($this->Arrangementen)))
    {
        $bFound= ($oArrangement->ArrangementID== $ArrangementID);
        if ($bFound)
        $this->Current_Elm= $i;
    };
    $this->EOF= !$bFound;
    $this->setFieldValues();
    return($bFound);
}

在其他一些针对此错误的解决方案的帖子之后,我将 while-list-each 的一部分更改为:foreach ($this->Arrangementen as $i => $oArrangement)

public function Seek($ArrangementID)
{
    $this->populate();
    $bFound= false;
    reset($this->Arrangementen);
    foreach ($this->Arrangementen as $i => $oArrangement)
    {
        $bFound= ($oArrangement->ArrangementID== $ArrangementID);
        if ($bFound)
        $this->Current_Elm= $i;
    };
    $this->EOF= !$bFound;
    $this->setFieldValues();
    return($bFound);
}

但是,如何将 while 函数的第一部分:“!$bFound &&”合并到循环中?

while (!$bFound && (list($i, $oArrangement) = each ($this->Arrangementen)))

有什么想法吗?

php list while-loop foreach each

评论


答:

0赞 Salketer 12/2/2022 #1

当你找到你的元素时,你可以打破这个循环。

public function Seek($ArrangementID)
{
    $this->populate();
    $bFound= false;
    reset($this->Arrangementen);
    foreach ($this->Arrangementen as $i => $oArrangement)
    {
        $bFound= ($oArrangement->ArrangementID== $ArrangementID);
        if ($bFound){
            $this->Current_Elm= $i;
            break; // Leave the loop!
        }
    };
    $this->EOF= !$bFound;
    $this->setFieldValues();
    return($bFound);
}

评论

0赞 Maurits 12/3/2022
非常感谢Salketer。我不是专家,但是我需要将我们的网站更新到PHP8.1。我正在一堆文件中尝试这样做,每个文件都需要更新。会让你知道它是否有效。