我有一个数据数组,除其他元素外,还包含开始日期字段,结束日期字段和持续时间字段。在验证期间,我需要检查其中至少有两个是否已设置,因为您可以从两个中推断出第三个。目前我的if子句如下:
if ((!isset($data['start']) && !isset($data['duration']))
|| (!isset($data['start']) && !isset($data['end']))
|| (!isset($data['end']) && !isset($data['duration']))
它运作正常,但我的问题是,是否有更优雅的方法来解决这个问题?
我的深奥部分也对是否存在给定n个字段和x最小要求的函数提供有效/无效状态的函数感兴趣?进一步说明,给定n个字段和这些字段之间的一组关系是否可以确定是否已满足依赖关系?
此数组包含许多与其他表单字段相关的其他元素,因此不幸的是仅计算元素数量不是有效的解决方案。
答案 0 :(得分:2)
这个怎么样:
$ctr = 0;
$ctr += (isset($data['start'])) ? 1 : 0;
$ctr += (isset($data['end'])) ? 1 : 0;
$ctr += (isset($data['duration'])) ? 1 : 0;
if ($ctr >= 2)
{
// do stuff
}
根据您的要求提供的功能,但您需要播种它:
$fields = array('start', 'end', 'duration');
$minimum = 2;
function check_fields($data, $fields, $minimum)
{
$ctr = 0;
foreach ($fields as $field)
{
$ctr += (isset($data[$field])) ? 1 : 0;
}
return ($ctr >= $minimum) ? true : false;
}
if (check_fields())
{
// do stuff
}