php 筛选数组,以保留具有包含搜寻字串之索引键的所有元素

rsl1atfo  于 2022-11-21  发布在  PHP
关注(0)|答案(3)|浏览(140)

我正在尝试进行一些预测性搜索,我使用preg_grep()作为一种摆脱SQL中LIKE的方法。
我有下面的数组:

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

如果我有Phorc,我想要所有的数组元素(键和值),部分匹配Phorc,所以这里是Phorce => 123。这对preg_grep()是可能的吗?
我试过使用以下方法:

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

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

sgtfey8w

sgtfey8w1#

所以你想搜钥匙?

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

qf9go6mv2#

这应该对您有效:
这里我只使用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,因此如果您没有该 * 升级!*

hgb9j2n6

hgb9j2n63#

使用以下代码获取响应:
Demo Code

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

var_export(
    array_filter(
        $values,
        function($haystack ) {
          if (is_numeric(strpos($haystack, 'Phorce'))) {
            return $haystack;
          } 
        },
        ARRAY_FILTER_USE_KEY
    )
);

相关问题