如何简化以下代码?
$ meta = get_post_meta($ post-> ID,' fields',true);
if ((isset ($meta['test1'])) || (isset ($meta['test2'])) || (isset ($meta['test3'])) || (isset ($meta['test4'])) || (isset ($meta['test5'])) ){ // do this }
提前谢谢!
答案 0 :(得分:0)
你可以简单地在isset()中使用变量名,如果变量为null,它将返回false,如
if($meta['test1'] or $meta['test2'] or $meta['testn']){
/*do stuff*/
}
在每种语言中都很常见。
答案 1 :(得分:0)
如果你的代码是一个整体,那么不,它不会变得更简单。
如果只是希望此if
语句看起来更简单一点,那就没问题了,只需在上面进行检查:
$metaSet = isset ($meta['test1']) || isset ($meta['test2']) || isset ($meta['test3']) || isset ($meta['test4']) || isset ($meta['test5'])
if($metaSet){ /*..*/ }
或者你可以做一些更聪明的事情:创建一个潜在的键数组,将数组映射到一个整数,如果它存在则为0,如果它不存在则为1。对数组求和,如果它大于0,则至少设置一个指定的键:
$keys = Array('test1', 'test2', 'test3', 'test4', 'test5'); // Update with potentials
if(atLeastOneIsSet($keys, $meta)){ /*..*/ }
function atLeastOneIsSet($a, $m){
$metaSet = array_sum(array_map(function($k) use ($m){
return (int)isset($m[$k]);
}, $a)) > 0;
return $metaSet;
}
答案 2 :(得分:0)
@Anil你的问题不是很详细。所以我假设$meta
是你需要的。
到目前为止,您所做的只是您没有遵循PHP编码标准的问题。
使用以下内容:
if( isset ($meta['test1'])
|| isset ($meta['test2'])
|| isset ($meta['test3'])
|| isset ($meta['test4'])
|| isset ($meta['test5'])
) {
// do this
}
要了解有关编码标准的详情,请访问this。