1

次の変数があります。

$start_t = 1;
$start_n = 2;
$end_t = 6;
$end_n = 5;

$start_t と $start_n および $end_t と $end_n の間のすべての論理的な組み合わせをチェックしたいと考えています。

私は次のものを持っています:

if($start_t >= $start_n && $end_t >= end_n)
{ // Do stuff }
elseif($start_t < $start_n && $end_t >= $end_n)
{ // Do stuff }
elseif($start_t >= $start_n && $end_t < $end_n)
{ // Do stuff }
elseif($start_t < start_n && $end_t < $end_n)
{ // Do stuff }

私が見ることができない他の組み合わせはありますか?$start_t、$start_n、$end_t、$end_n の間を意味します。

利用可能なすべての組み合わせを計算する方法はありますか?

4

3 に答える 3

3

等式の場合(、、$start_t === $start_nと同様$end_*)がありません。それ以外の場合は、すべての組み合わせがあります。

于 2013-01-11T10:33:55.207 に答える
3

二項演算子を使用しているため、2 つあります。= 開始変数の 2 つの順列、およびそれぞれに対して 2! = 最終変数の 2 つの順列。つまり、合計で 2!*2! = 等しいかどうかをテストする必要がないと仮定すると、4 つの組み合わせ。これは、コードがすべてのケースをテストすることを証明します。

于 2013-01-11T10:41:18.857 に答える
2
        if($start_t >= $start_n)
        {
            if($end_t >= end_n)
                //do stuff
            else
                //do stuff
        }
        else
        {
            if($end_t >= end_n)
                //do stuff
            else
                //do stuff
        }

このように再構成すると、組み合わせをより適切に識別できます。後でこれをリファクタリングして元の形式に戻すことができます

于 2013-01-11T10:40:06.437 に答える