Foreach循环没有做它看起来应该的样子 - 或者它可能是在被调用的函数中? PHP

我有一个相当简单的功能,从用户的输入或发送框中删除私人消息:
public function delete($messageID) {
    $type = $this->findType($messageID);
    if ($type == 'in') {
        foreach ($this->inArr as $key => $value) {
            if ($this->inArr[$key]->messageID != $messageID)
                $implodeData[$key] = $this->inArr[$key]->messageID;
            }
        if (!isset($implodeData))
            $imploded = '0';
        else
            $imploded = implode(',', $implodeData);
        $result = $this->_database->updatePMUser('inArr', $imploded, 'UID', $this->UID);
        $result2 = $this->_database->deletePM('messageID', $messageID);
        return;
        }
    else {
        foreach ($this->sentArr as $key => $value) {
            if ($this->sentArr[$key]->messageID != $messageID)
                $implodeData[$key] = $this->sentArr[$key]->messageID;
            }
        if (!isset($implodeData))
            $imploded = '0';
        else
            $imploded = implode(',', $implodeData);
        $result = $this->_database->updatePMUser('sentArr', $imploded, 'UID', $this->UID);
        $result2 = $this->_database->deletePM('messageID', $messageID);
        return;
        }
    }
我意识到我可以通过处理类型变量将这个代码减少一半,我将会这样做,但这不是目前关注的问题。我的问题是,当一个视图消息页面底部的删除函数只调用一次这个函数时,这个函数运行得非常好,但是当它被一个foreach循环连续多次调用时,它直接从in或者删除“checked”消息发送盒子 - 它做了一些奇怪的事情。如果我一次检查一条消息并删除,则没有问题 - 如果我检查两个或更多,它完全适用于它删除的第一条消息,在后续消息上它只删除实际消息(对deletePM的调用)但它不会从用户的数据库行中删除messageID值(这是整个第一部分所做的,这是对updatePMUser的调用)。 起初我认为这是一个缓存问题,但我已经解决了这个问题但仍然没有。它应该以与复选框删除在不同类中的foreach循环上工作完全相同的方式执行所有操作 - 所有输入都相同,它只是一个接一个地调用几次,完全返回,然后循环。这是调用方法的代码:
private function _processSelectedSent() {
    $pmObj = unserialize(base64_decode($_POST['pmObj']));
    $i=1;
    foreach ($_POST as $key => $value) {
        if ($value == 'marked') {
            $checkedArray[$i] = $key;
            $i++;
            }
        }
    if ($_POST['submitter'] == 'Delete Selected') {
        if (is_array($checkedArray)) {
            foreach ($checkedArray as $key => $value)
                $pmObj->delete($value);
            }
        else
            $pmObj->delete($checkedArray[1]);
        header("Location: ".HOME_PAGE.PM_PAGE."?view=sentbox&nocache=".time());
        }
    }
其中一个用于发送箱处理,另一个用于收件箱处理,两者在功能上与我们的意图和目的相同。哦,我已经var_dumped了checkedArray的值等等,它们都很好,所以循环应该得到适当的输入。谁能看到打嗝的位置?谢谢。     
已邀请:
没关系,我明白了。这很简单,我只需要删除我从数据库中删除的数组中的相同值 - 它始终处理同一个对象,以便变量永远不会更改,并且每个后续调用再次将先前删除的消息视为有效消息。     

要回复问题请先登录注册