仅测试评估数组的第一个元素

时间:2013-08-09 13:10:05

标签: php regex arrays preg-match

我遍历表单的值,检查每个字段是否有4位数。我的问题是目前只在匹配第一个字段$card1 ...

时验证是真还是假
function cardcheck ($card1,$card2,$card3,$card4)
{
    $cards = array($card1,$card2,$card3,$card4);
    $regex = "/[0-9]{4}/";
    for ($i=0;$i<4;$i++)
    if (! preg_match ($regex,$cards[$i]))
    {
        return false;
    }
    else
    {
        return true;
    }
}

2 个答案:

答案 0 :(得分:3)

每次在第一次迭代中返回(使用return ...)某些东西(带有else的布尔条件)。

您需要将return true放在循环语句之外:

function cardcheck ($card1,$card2,$card3,$card4)
{
    $cards = array($card1,$card2,$card3,$card4);
    $regex = "/[0-9]{4}/";
    for ($i=0;$i<4;$i++) {
        if (! preg_match ($regex,$cards[$i])) {
            return false;
        }
    }
    return true;
}

答案 1 :(得分:3)

function cardcheck ($card1,$card2,$card3,$card4)
{
    $cards = array($card1,$card2,$card3,$card4);
    $regex = "/[0-9]{4}/";

    for ($i=0;$i<4;$i++)
       if (! preg_match ($regex,$cards[$i]))
       {
           return false;
       }

    return true;
}