php - 在数组中查找与模式匹配的键

php
2022-08-30 16:48:36

我有一个数组,看起来像:

 Array ( [2.5] => ABDE [4.8] => Some other value ) 

如何找到键与模式匹配的任何键/值对?我将知道密钥中第一个数字的值,但不知道第二个数字的值。例如,使用前缀“2.”,我希望能够以某种方式找到键“2.5”并返回键和值“ABDE”。

我正在考虑使用具有以下模式的正则表达式:

$prefix = 2;
$pattern = '/'.$prefix.'\.\d/i';

然后循环遍历数组并检查每个键。(顺便说一句,只是为了演示目的,$prefix已被硬编码为2,但在实际系统中,这是用户输入提供的值)。

我想知道是否有更简单的方法可以做到这一点?

谢谢。


答案 1

我认为你需要这样的东西:

$keys = array_keys($array);
$result = preg_grep($pattern, $keys);

结果将是一个数组,其中包含与正则表达式匹配的所有键。这些键可用于检索相应的值。

看看preg_grep功能。


答案 2

您只需循环浏览数组并检查键即可

$array = array(...your values...);

foreach($array as $key => $value) {
    if (preg_match($pattern,$key)){
        // it matches
    }
}

您可以将其包装在函数中,并将模式作为参数传递


推荐