我有一个包含多个条件的循环
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>
答案 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;
}