Php 在这种情况下,如何缩短if语句?
我在做一个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 ((!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代码>。