检查 PHP 中的多个(如果不是)条件

Check against multiple - if not - conditions in PHP

我有两个输入字段,分别是事件的开始时间和结束时间。我只希望时间采用 xx:00 或 xx:30 格式。前端已处理,但我想在后端验证输入。以下是我如何从发布的时间中仅检索分钟数。

function validate_time($start_time,$end_time)
{
    $start_time_min = substr($start_time,-2,2);
    $end_time_min = substr($end_time,-2,2);

    if ($start_time_min != '00' || $end_time_min != '00')
    {
        return false;
    }
    if ($start_time_min != '30' || $end_time_min != '30')
    {
        return false;
    }
    return true;
}

上面的 if 语句 returns 总是 false,所以我需要的是 return 只有当开始或结束时间不是 00 或不是 30 时才为 false。

在上述情况下使用 or (||) 是导致问题的原因,因为您会发现其中一个是 != 0 或 30。

if ($start_time_min != '00' && $start_time_min != '30')
{
    return false;
}
if ($end_time_min != '00' && $end_time_min != '30')
{
    return false;
}

试试这个:

function validate_time($start_time,$end_time)
{
   $startTime = explode(':', $start_time);
   $endTime = explode(':', $end_time);
   if ($startTime[1] !='00' || $endTime[1] !='30') {
     return false;
   }
   return true;
}

您可以像下面的代码那样使用单个 If 条件:

function validate_time($start_time,$end_time)
{
    $start_time_min = substr($start_time,-2,2);
    $end_time_min = substr($end_time,-2,2);    
    if (($start_time_min != '00' && $start_time_min != '30') || ($end_time_min != '00' && $end_time_min != '30'))
    {
        return false;
    }
    return true;
}