过滤数组以保留所有具有包含搜索字符串的键的元素
Filter array to retain all elements that have a key containing a searched string
我正在尝试进行一些预测性搜索,我正在使用 preg_grep()
作为摆脱 SQL 中的 LIKE
的一种方式。
我有以下数组:
$values = array("Phorce" => 123, "Billy" => 234);
如果我有 Phorc
,我想要所有数组元素(键和值),部分匹配 Phorc
,所以这里 Phorce => 123
。 preg_grep()
这可能吗?
我尝试使用以下方法:
$result = preg_grep('~' . 'Phorce' . '~', $values);
我怎样才能让我的代码像上面描述的那样工作?
这应该适合你:
这里我只使用array_filter()
combined with 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,所以如果您没有 升级!
那么你想搜索密钥吗?
$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);
我正在尝试进行一些预测性搜索,我正在使用 preg_grep()
作为摆脱 SQL 中的 LIKE
的一种方式。
我有以下数组:
$values = array("Phorce" => 123, "Billy" => 234);
如果我有 Phorc
,我想要所有数组元素(键和值),部分匹配 Phorc
,所以这里 Phorce => 123
。 preg_grep()
这可能吗?
我尝试使用以下方法:
$result = preg_grep('~' . 'Phorce' . '~', $values);
我怎样才能让我的代码像上面描述的那样工作?
这应该适合你:
这里我只使用array_filter()
combined with 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,所以如果您没有 升级!
那么你想搜索密钥吗?
$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);