PHP:如何优化多条件

时间:2013-01-09 13:17:22

标签: php

我有一个包含多个条件的循环

foreach ($fields as $field_key => $value) {

if ($field_key !== 'a' && $field_key !== 'b' && $field_key !== '10200' && $field_key !== 'z' && $field_key !== 'y') {
 ...
//display $value;

}

}

如何优化代码以避免if子句中的多个条件?

我正在考虑使用例如 {a, b, y, z}in_array <来提交一个数组search_array对其进行搜索,找不到值。 / p>

5 个答案:

答案 0 :(得分:0)

尝试使用PHP本机in_array()函数:

$vals = array('a', 'b');

foreach ($fields as $field_key => $value) {

    if (!in_array($field_key, $vals)) {
         ...
        //display $value;

    }

}

答案 1 :(得分:0)

尝试in_array

$keys = array('a', 'b', '10200', 'z', 'y');

foreach ($fields as $field_key => $value) {
  if ( !in_array($field_key, $keys) ) {
    //display $value;
  }
}

答案 2 :(得分:0)

$array = array('a', 'b', '10200', 'z', 'y');

foreach ($fields as $field_key => $value) {    
    if (!in_array($field_key, $array)) {
    ...
    //display $value;    
    }
}

答案 3 :(得分:0)

另一种选择。

ignore = array('a', 'b', '10200', 'z', 'y');
$allowed = array_diff_key($fields, array_combine($ignore, $ignore));
foreach ($allowed as $field_key => $field_value) {
    //...
}

答案 4 :(得分:-1)

您可以创建查找表:

$exclude = array('a' => true, 'b' => true , '10200' => true , 'z' => true, 'y' => true);

foreach ($fields as $field_key => $value) {
    if (!isset($exclude[$field_key])) {
        //display $value;
    }
}

或事先过滤掉元素:

$filtered_fields = array_diff_keys($fields, $exclude);

foreach($filtered_fields as $field_key => $value) {
    //display $value;
}