是否有适用于部分匹配的 array_keys 版本?
Is there a version of array_keys that works on partial matches?
我想 return PHP 数组中的所有键,其中对应的值包含搜索元素。
如果值与搜索词完全匹配,array_keys
将起作用,但如果搜索词出现在值中某处但不完全匹配,则无效。
我怎样才能做到这一点?
试试这个自定义函数:
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;
}
}
这将 return 部分匹配的键,并且不区分大小写。如果要使其区分大小写,请将 stripos
更改为 strpos
。
array_keys() and array_filter()的组合可以达到你想要的效果:
$myArray = ['knitting needle', 'haystack', 'needlepoint'];
$search = 'needle';
$keys = array_keys(
array_filter(
$myArray,
function ($value) use ($search) {
return (strpos($value, $search) !== false);
}
)
);
我想 return PHP 数组中的所有键,其中对应的值包含搜索元素。
如果值与搜索词完全匹配,array_keys
将起作用,但如果搜索词出现在值中某处但不完全匹配,则无效。
我怎样才能做到这一点?
试试这个自定义函数:
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;
}
}
这将 return 部分匹配的键,并且不区分大小写。如果要使其区分大小写,请将 stripos
更改为 strpos
。
array_keys() and array_filter()的组合可以达到你想要的效果:
$myArray = ['knitting needle', 'haystack', 'needlepoint'];
$search = 'needle';
$keys = array_keys(
array_filter(
$myArray,
function ($value) use ($search) {
return (strpos($value, $search) !== false);
}
)
);