在这种情况下如何缩短if语句?


How do i shorten a if statement in that situation?

我正在执行if语句来检查某个值是否在数组

    if ((!in_array($add['job_type'][$key], $jobtypes))) {
        $add['job_type'][$key] = NULL;
    }

我做了多个if语句来做同样的事情,但我想做这样的事情,让我的代码更小,更容易阅读:

    $value   = ($value == '0') ? $value = NULL : $value;

我该怎么做呢?

我不认为长度if语句是你的问题,如果你的代码是不可读的。我怀疑这实际上是因为:

我用了多个if语句来做同样的事情

不需要手动指定多个if语句,您可以将其变成一个函数:

function updateJobType($key) {
  if ((!in_array($add['job_type'][$key], $jobtypes))) {
    $add['job_type'][$key] = NULL;
  }
}

然后用你喜欢的参数调用它:

updateJobType('job1');
updateJobType('job2');
updateJobType('job3');

也就是说,如果没有完整的问题上下文或完整的代码,就很难判断。

不确定你到底想要什么,但这不会工作吗…

$add['job_type'][$key] = (in_array($add['job_type'][$key], $jobtypes)) ?  $add['job_type'][$key] : NULL;

执行第一个block的最短方法是:

$add['job_type'][$key] = (in_array($add['job_type'][$key], $jobtypes)) ? : NULL;

但是如果你有很多代码对很多其他数组做同样的事情,你需要写一个函数(或方法)。现在你有:

function unsetVar(&$value, &$arr){
    $value = (in_array($value, $arr)) ? : NULL;
}

然后,这样调用函数:

unsetVar($add['job_type'][$key], $jobtypes);