-1

我有一个带有多个条件的循环

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_arraysearch_array

4

5 回答 5

0

一个不同的选择。

ignore = array('a', 'b', '10200', 'z', 'y');
$allowed = array_diff_key($fields, array_combine($ignore, $ignore));
foreach ($allowed as $field_key => $field_value) {
    //...
}
于 2013-01-09T13:45:36.133 回答
0

尝试使用 PHP 原生in_array()函数:

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

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

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

    }

}
于 2013-01-09T13:19:16.380 回答
0

尝试in_array

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

foreach ($fields as $field_key => $value) {
  if ( !in_array($field_key, $keys) ) {
    //display $value;
  }
}
于 2013-01-09T13:19:25.580 回答
0
$array = array('a', 'b', '10200', 'z', 'y');

foreach ($fields as $field_key => $value) {    
    if (!in_array($field_key, $array)) {
    ...
    //display $value;    
    }
}
于 2013-01-09T13:20:07.927 回答
-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;
}
于 2013-01-09T13:23:32.163 回答