【问题标题】:Amount of logical combinations逻辑组合数量
【发布时间】:2013-01-11 10:30:34
【问题描述】:

我有以下变量:

$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 之间。

有没有办法计算所有可用的组合?

【问题讨论】:

  • 当它们相等时呢? $start_t == $start_n
  • 这取决于您要使用的条件和逻辑运算符。假设它只是大于/小于和逻辑 && 运算符我认为只有这 4 个是组合
  • 对不起,你是对的。我现在将更改上面的示例
  • 我只是做了代码修改。现在似乎更清楚了。

标签: php if-statement logical-operators


【解决方案1】:

缺少相等大小写($start_t === $start_n,与 $end_* 类似)。否则,所有组合都在那里。

【讨论】:

    【解决方案2】:

    当您使用二元运算符时,您有 2! = 开始变量的 2 个排列,每个排列 2! = 结束变量的 2 个排列。所以,你总共有 2!*2! = 4 个组合,假设您不需要测试是否相等。这证明您的代码可以针对每种情况进行测试。

    【讨论】:

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

      这样的重组将帮助您更好地识别组合。您可以稍后将其重构为原始格式

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-15
        • 1970-01-01
        • 2017-02-23
        • 1970-01-01
        • 2015-09-08
        • 1970-01-01
        • 1970-01-01
        • 2015-08-27
        相关资源
        最近更新 更多