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

Php 在这种情况下,如何缩短if语句?,php,Php,我在做一个if语句来检查数组中是否有某个值 if ((!in_array($add['job_type'][$key], $jobtypes))) { $add['job_type'][$key] = NULL; } 我做了多个if语句来做同样的事情,但我想做一些类似的事情,使我的代码更小,更易于阅读: $value = ($value == '0') ? $value = NULL : $value; 我该怎么做呢?我不确定你到底想要什么,但这不

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

    if ((!in_array($add['job_type'][$key], $jobtypes))) {
        $add['job_type'][$key] = NULL;
    }
我做了多个if语句来做同样的事情,但我想做一些类似的事情,使我的代码更小,更易于阅读:

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

我该怎么做呢?

我不确定你到底想要什么,但这不管用

$add['job_type'][$key] = (in_array($add['job_type'][$key], $jobtypes)) ?  $add['job_type'][$key] : NULL;
如果代码不可读,我不认为
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\u type'][$key]=(在\u数组中($add['job\u type'][$key],$jobtypes)):无效的
但是,如果有很多代码在其他数组中执行相同的操作,则需要编写一个函数(或方法)。现在您将拥有:

函数未设置变量(&$value,&$arr){
$value=(在数组中($value,$arr))?:NULL;
}
然后,按以下方式调用函数:

unsetVar($add['job\u type'][$key],$jobtypes);

您的第一个代码块最好保持原样。把它变成三元语句可能会使它更复杂,更难阅读。好的,谢谢你的建议。对于简单变量来说,三元数并不是那么糟糕,但当它是多维数组引用时,您必须重复该复杂表达式。@MarkM同意,行数越少,代码就越清晰。仅供参考,编写第二个代码的正确方法是:
$value=($value='0')?NULL:$value