我有一个表单,当前显示混凝土5.6属性范围内的复选框。我需要做的是获取该列表,但现在过滤掉一个项目
我想过滤掉mpdID
的{{1}}
用于显示的代码是:
81
答案 0 :(得分:0)
您正在寻找array_filter
示例强>
$mp_ids = [1,5,81,81,23];
$mp_ids = array_filter($mp_ids, function($value){
return $value != 81;
});
如果您只是在视图上方执行此操作,那么您可以将此逻辑保留在视图之外,并使事情更清晰。
许多业务逻辑应该被排除在视图之外,否则事情就会变得混乱。
现在$mp_ids
将是一个包含任何值但是81的数组。您可以将其包装到函数中以使其更灵活。
ID的自定义过滤功能
function filter_ids($array_of_ids, $exclude) {
return array_filter($array_of_ids, function($value) use ($exclude){
return $value != $exclude;
});
}
filter_ids($mp_ids, 81);
// returns array(3) { [0]=> int(1) [1]=> int(5) [4]=> int(23) }
// return the data to your view to loop and generate the checkboxes
这只是一个简单的例子,绝对可以改进。但是应该让你知道从哪里开始给你更多的灵活性。
<强>性能强>
这会改善你在foreach循环中的表现,因为它只循环通过它应该输出的项目,而不必经常检查它是否应该。
答案 1 :(得分:0)
您可以在foreach
阻止开始后直接使用continue
。像这样:
foreach block...
if ($break['mdpID'] == 81) {
continue;
}