当找到项目结束循环但找不到呼叫功能时,请通过数组迭代



嗨,我有一个问题。我有一个动态填充的数组。在数组中,有2种主要类型。具有等于27个字符的文件名和其余的物品或多或少。我能够将两种类型分开。第二个列表被添加到称为$ usedArray的新数组中。然后将这些项目迭代,并将文件名从字符0,6串联以比较页面上的Enduser的输入。如果在该数组中找到该项目,它将发射一个函数,向他们发送文本和完整文件名称的电子邮件。我的问题是,如果直到X迭代才能找到该项目,它将发射未找到的功能X次量,如果找不到它,则它也会做同样的事情。如果我有99个不匹配的项目,则99次。为了停止射击,我将未发现的只是在屏幕上找不到打印。我想到在循环外打电话给Not -Round函数,但如果找到一个物品,则不希望它发射这是我到目前为止的代码

do{
    if (substr($val,0,6) == $studentID)
    {
        $codeFound = substr($val,22,19);
        print_r($studentID . ' is found <br /> Their code is ' . $codeFound);
        //sendText($phoneNum,$codeFound,$messageMonth);
        //sendEmail($emailInfo,$messageMonth,$codeFound);
        break 1;
    }
    else
    {
        print_r($studentID . " was not found <br />");
    }
} while(list(, $val) = each($usedArray));

这是我的输出

166003 was not found
166003 was not found
166003 was not found
166003 is found
Their code is xxxxxxxxxx

我认为您应该添加一个标志以跟踪是否找到了某些东西:

$item_found = false;
do{
    if (substr($val,0,6) == $studentID)
    {
        $codeFound = substr($val,22,19);
        print_r($studentID . ' is found <br /> Their code is ' . $codeFound);
        //sendText($phoneNum,$codeFound,$messageMonth);
        //sendEmail($emailInfo,$messageMonth,$codeFound);
        // item found!
        $item_found = true;
        break 1;
    }
} while(list(, $val) = each($usedArray));
// now check - if `$item_found` is false 
// then you can send your NotFoundEmail
if (!$item_found) {
    sendNotFoundEmail();
}

最新更新