匹配以 PHP 中另一个数组中指定的字母开头的数组元素


Match array elements beginning with letters specified in another array in PHP

我有以下数组:

Array
(
    [0] => BCD
    [1] => ACE
    [2] => AHP
    [3] => BGH
    [4] => ART
    [5] => COT
    [6] => ARG
    [7] => BGT
)

我需要匹配第一个字母在以下数组中的所有元素:

Array
(
    [0] => B
    [1] => A
)

获得:

Array
(
    [0] => ACE
    [1] => AHP
    [2] => BGH
    [3] => ART
    [4] => ARG
    [5] => BGT
)

除了遍历整个数组之外,如何在 PHP 中执行此操作?是否有内置的PHP数组函数或组合?顺序对于结果数组的键和值都无关紧要。多谢。

您可以使用

array_filter进行以下操作:

$array = array('CBD', 'NHN', 'NHP', 'WHC', 'NND', 'CQN', 'WST', 'WVT');
$whitelist = array('W', 'N');
$filtered = array_filter($array, function($val) use ($whitelist) {
  // check if first letter is in the whitelist array
  if (in_array($val{0}, $whitelist)) {
    return $val;
  }
  return false;
});

输出:

Array
(
    [1] => NHN
    [2] => NHP
    [3] => WHC
    [4] => NND
    [6] => WST
    [7] => WVT
)