【问题标题】:Filter out all rows that do not match multiple rules across four different elements过滤掉四个不同元素中与多个规则不匹配的所有行
【发布时间】:2022-01-16 19:40:17
【问题描述】:

我想从数组中删除不满足某些条件的所有元素。

例如,我有这个二维数组:

[
    ['UK', '12', 'Sus', 'N'],
    ['UK', '12', 'Act', 'Y'],
    ['SQ', '14', 'Act', 'Y'],
    ['CD', '12', 'Act', 'Y']
]

我想删除所有与此格式不匹配的行:

['UK' or 'CD', '12', Any Value, 'Y']

留下这个过滤后的数组:

[
    ['UK', '12', 'Act', 'Y'],
    ['CD', '12', 'Act', 'Y']
]

我该怎么做?

【问题讨论】:

  • 我看不到问号。这是一个问题描述,而不是一个问题。你试过什么没用?这很简单,有十几种方法可以轻松完成。

标签: php multidimensional-array filtering multiple-conditions array-filter


【解决方案1】:

使用array_filter。它允许您通过提供回调对每个项目执行检查。在该回调函数中,为符合您的条件的项目返回 true。 array_filter 返回一个数组,其中删除了所有与您的条件不匹配的项目。

例如,您的示例数组可以像这样过滤:

$array = [
    ['UK', '12', 'Sus', 'N'],
    ['UK', '12', 'Act', 'Y'],
    ['SQ', '14', 'Act', 'Y'],
    ['CD', '12', 'Act', 'Y']
];

$filtered_array = array_filter($array, function ($item) {
    return count($item) >= 4 &&
           ($item[0] == 'UK' || $item[0] == 'CD') &&
           $item[1] == '12' &&
           $item[3] == 'Y';
});

print_r($filtered_array);

【讨论】:

  • 我刚刚对此做了相当大的修改;如果您不同意,请随时回滚或进一步调整。
猜你喜欢
  • 2014-08-25
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
相关资源
最近更新 更多