当且仅当数组中的所有值都为真时返回true?

时间:2012-09-20 20:40:06

标签: php forms validation

所以我有一个包含所有函数调用的数组来检查表单的输入。然后,我在数组中有一个foreach循环,以查看validate函数的返回值是true还是false。根据该结果,foreach所处的函数返回true或false。我想弄清楚的问题是,如果所有验证函数都恢复正常,如何只返回一次。

这是我的代码:

public function valInputs()
{
    $valArray = array(
        valName($firstName),
        valName($lastName),
        valPhone($phone),
        valEmail($email)
    ); // these functions return true/false depending on validation

    foreach($valArray as $value)
    {
        if(!$value)
        {
            return false;
            break;
        }
        else
        {
           return true; // the problem is, true gets returned X number of times
        }
    }
}

关于如何保持多次返回的任何想法?谢谢你的帮助。

4 个答案:

答案 0 :(得分:12)

返回调用会停止foreach循环和函数。实际上你可以在循环中返回true:

foreach($valArray as $value)
{
    if(!$value)
    {
        return false;
        // break is not needed, and should NOT be used in this case,
        // as it stops the foreach loop.
        // It will never be reached anyways, seeing how you return false just above.
    }
}
return true;

如果它到达循环的末尾,则表示它没有返回false。因此它应该返回true。

答案 1 :(得分:3)

为什么不呢:

public function valInputs() {
    return (valName($firstName) && valName($lastName) && valPhone($phone) && valEmail($email));
}

如果所有这些都为真,则返回true,如果至少其中一个为假,则返回false。坦率地说,我不确定为什么你需要一个foreach循环。

答案 2 :(得分:2)

有趣的方法是

public function valInputs()
{
    $valArray = array(
        valName($firstName),
        valName($lastName),
        valPhone($phone),
        valEmail($email)
    ); // these functions return true/false depending on validation

return array_product( $valArray ) === 1; 
}

答案 3 :(得分:0)

根据定义,return结束函数。你不能多次返回。

查看pst的评论,检查你是否多次调用该函数。