从PHP列表中筛选项目

时间:2018-02-28 18:17:52

标签: php filter concrete5-5.6

我有一个表单,当前显示混凝土5.6属性范围内的复选框。我需要做的是获取该列表,但现在过滤掉一个项目 我想过滤掉mpdID的{​​{1}} 用于显示的代码是:

81

2 个答案:

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