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

时间:2014-06-27 23:26:42

标签: php

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

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

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

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

我该怎么做?

3 个答案:

答案 0 :(得分:1)

不确定你之后会发生什么,但不会有这项工作......

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

答案 1 :(得分:1)

如果您的代码不可读,我认为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');

也就是说,如果没有问题的完整背景或完整的代码,就很难分辨。

答案 2 :(得分:0)

执行第一个块的最短路径是:

$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);