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

Php 如何在只有部分匹配的键上获得preg_grep()?,php,Php,我正在尝试进行一些预测性搜索,并使用preg\u grep()作为一种摆脱SQL中类似的的方法 我有以下数组: $values = array("Phorce" => 123, "Billy" => 234); 如果我有Phorc我想要所有数组元素(键和值),部分匹配Phorc,所以这里是Phorce=>123。使用preg\u grep()是否可以实现这一点 我尝试使用以下方法: $result = preg_grep('~' . 'Phorce' . '~', $values)

我正在尝试进行一些预测性搜索,并使用
preg\u grep()
作为一种摆脱SQL中类似
的方法

我有以下数组:

$values = array("Phorce" => 123, "Billy" => 234);
如果我有
Phorc
我想要所有数组元素(键和值),部分匹配
Phorc
,所以这里是
Phorce=>123
。使用
preg\u grep()
是否可以实现这一点

我尝试使用以下方法:

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

如何使代码按上述方式工作?

这应该适用于您:

在这里,如果每个数组键包含搜索值,我只使用组合搜索

<?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);

?>

在别人说它不行之前:你需要PHP5.6,所以如果你没有升级

那么你想搜索钥匙

$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);

添加你尝试过的代码。让我更好地了解你在做什么。如果一个表包含1000行,您将获得所有行。。。然后用PHP过滤它们,而不是用SQL过滤它们?@Augwa我已经更新了这个@Phorce这并没有回答我的问题。为什么要避免SQL中的类似问题?@Augwa而不是使用SQL。我有一个值(名称)数组,每个值都有一个id,所以我想做的是,在这个数组中搜索包含的所有可能性,例如
Phor
,所以如果有人传入这个值,它将返回
Phorce
谢谢!这是有效的:)!唯一的问题是,我想返回键值和键。。这似乎只是给钥匙,而不是钥匙values@Rizier123答案就是这样,但我会更新我的,让它也包含它们。这个答案中的循环太多了。使用Rizier的非正则表达式过滤器。
$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);