【问题标题】:Test only evaluating first element of array仅测试评估数组的第一个元素
【发布时间】:2013-08-09 13:10:05
【问题描述】:

我遍历表单的值,以检查每个字段是否有 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;
    }
}

【问题讨论】:

  • 你的 for 循环中有一个 return 语句。它将在第一次迭代时返回,无论是真还是假。您需要将其移到 for 循环之外。

标签: php regex arrays preg-match


【解决方案1】:

您每次都在第一次迭代中返回(通过使用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;
}

【讨论】:

    【解决方案2】:
    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 2017-04-25
      相关资源
      最近更新 更多