【问题标题】:Bunch of if conditions - simplified?一堆 if 条件 - 简化?
【发布时间】:2018-04-16 16:57:11
【问题描述】:

我的 if 条件如何更简单?

例如:

statments:

condition 1: $row['age'] > 5;
condition 2: $row['id'] > 10;
condition 3: $row['number'] == '100';
condition 4: $row['gender'] == 'male';
condition 5: $row['state'] == 'New York';

我该如何做这样的事情:如果存在上述两个条件,则回显“欢迎”?我在考虑使用数组吗?也许别的东西会更好?

if(two of the conditions above are true) {
    echo "Welcome";
}

【问题讨论】:

  • 到目前为止你已经走了多远,给我们看看代码
  • 你可以只使用一个计数器,并根据每个通过的条件递增它。
  • 为什么这个问题会包含 MySQL 标签?
  • @Uueerdo 是个好主意,我该如何设置 if 条件?可以把它放在一个数组里然后做if exists in array...?
  • @JasonBale 查看我发布的答案;我认为建立一系列条件(如果这是您的建议)只会使事情变得过于复杂。即使可以完成,它对这个特定任务所做的只是降低可读性,以在每个条件下(最多)保存一行。

标签: php arrays if-statement switch-statement


【解决方案1】:
    if (isnull($row['age'] > 5,0) + isnull($row['id'] > 10,0) + 
        isnull($row['number'] == '100',0) + isnull($row['gender'] == 
        'male',0) + isnull($row['state'] == 'New York',0) >= 2) {
        echo "Welcome";
    }

【讨论】:

    【解决方案2】:

    我的 php-syntax 已经生锈了,所以对我的评论建议的解释应该被认为是临界伪代码:

    int conditionsMet = 0;
    if ($row['age'] > 5)
       conditionsMet++;
    if ($row['id'] > 10)
       conditionsMet++;
    if ($row['number'] == '100')
       conditionsMet++;
    if ($row['gender'] == 'male')
       conditionsMet++;
    if ($row['state'] == 'New York')
       conditionsMet++;
    
    if(conditionsMet >= 2) {
        echo "Welcome";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      相关资源
      最近更新 更多