如何在只有部分匹配的键上获得preg_grep()?

时间:2015-06-01 12:55:44

标签: php

我尝试进行预测性搜索,并且使用preg_grep()作为远离SQL中LIKE的方法。

我有以下数组:

$values = array("Phorce" => 123, "Billy" => 234);

如果我有Phorc我想要所有数组元素(键和值),部分匹配Phorc,那么这里Phorce => 123。这可能是preg_grep()吗?

我试过使用以下内容:

$result = preg_grep('~' . 'Phorce' . '~', $values);

如何让我的代码按上述方式工作?

2 个答案:

答案 0 :(得分:1)

这应该适合你:

此处,我只使用array_filter()stripos()结合搜索每个数组键,如果它包含搜索值。

<?php

    $array = array("Phorce" => 123, "Billy" => 234);

    $search = "Phor";
    $arr = array_filter($array, function($k)use($search){
        return stripos($k, $search) !== FALSE;
    }, ARRAY_FILTER_USE_KEY);

    print_r($arr);

?>

输出:

Array
(
    [Phorce] => 123
) 

在有人说之前,它不起作用:你需要PHP 5.6,所以如果你没有升级!

答案 1 :(得分:1)

那么你想搜索密钥呢?

$values = array("Phorce" => 123, "Billy" => 234);
$results = preg_grep('/Phor/', array_keys($values));

$arr = [];
foreach($results as $result) {
    $arr[$result] = $values[$result];
}

print_r($arr);