1

他の要素の中でも、開始日フィールド、終了日フィールド、および期間フィールドを含むデータの配列があります。検証中に、少なくとも 2 つが設定されていることを確認する必要があります。これは、2 つから 3 つ目を推測できるためです。現在、私の if 句は次のとおりです。

if ((!isset($data['start']) && !isset($data['duration'])) 
    || (!isset($data['start']) && !isset($data['end']))
    || (!isset($data['end']) && !isset($data['duration']))

それは正常に動作しますが、私の質問は、この問題に対処するよりエレガントな方法があるかどうかです。

私の難解な部分は、与えられた n フィールドと x の最小値が有効/無効な状態を提供する関数があるかどうかについても興味がありますか? さらに、与えられた n 個のフィールドとそれらのフィールド間の一連の関係によって、依存関係が満たされているかどうかを判断できるでしょうか?

この配列には、他のフォーム フィールドに関連する他の多くの要素が含まれているため、残念ながら、単に要素の数を数えることは有効な解決策ではありません。

4

1 に答える 1

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
}
于 2013-11-05T16:36:12.280 に答える