简化多重设置

时间:2014-10-13 10:04:57

标签: php wordpress isset

如何简化以下代码?

  

$ 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 }

提前谢谢!

3 个答案:

答案 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