是否有适用于部分匹配的array_keys版本?

时间:2015-03-17 11:49:34

标签: php arrays match

我想返回PHP数组中的所有键,其中相应的值包含搜索元素。

如果值与搜索词完全匹配,

array_keys将起作用,但如果搜索词出现在值中的某个位置但不完全匹配,则

{{3}}。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:4)

array_keys()array_filter()的组合可以实现您的目标:

$myArray = ['knitting needle', 'haystack', 'needlepoint'];

$search = 'needle';
$keys = array_keys(
    array_filter(
        $myArray,
        function ($value) use ($search) {
            return (strpos($value, $search) !== false);
        }
    )
);

Demo

答案 1 :(得分:1)

尝试此自定义功能:

function array_keys_partial(array $haystack, $needle) {
    $keys = array();
    foreach ($haystack as $key => $value) {
        if (false !== stripos($value, $needle)) {
            array_push($keys,$key);
        }
    }
    if(empty($keys)){
        return false;
    }
    else {
        return $keys;
    }
}

这将返回部分匹配的键,并且也不区分大小写。如果您想区分大小写,请将stripos更改为strpos