我想搜索像SQL查询这样的数组,我不知道该怎么做。 这是我的阵列:
$array = array(
'app' => 'apple',
'ban' => 'banana',
'lem' => 'lemon',
'ora' => 'orange',
);
当我搜索%an%
时,应该返回此信息:
$array = array(
'ban' => 'banana',
'ora' => 'orange',
);
当我搜索%or%
时,应该返回:
$array = array(
'ora' => 'orange'
);
我的意思是搜索数组的键和值
答案 0 :(得分:2)
使用array_filter
函数的解决方案:
$search_word = "an"; // dynamic search word
$search_result = array_filter($array, function($v) use($search_word){
return strpos($v, $search_word) !== false;
});
print_r($search_result);
输出:
Array
(
[2] => banana
[4] => orange
)
其他方法:
从PHP 5.6开始,我们可以使用带有array_filter
标志的ARRAY_FILTER_USE_BOTH
按键和值过滤数组:
$array = array(
'app' => 'apple',
'ban' => 'banana',
'lem' => 'lemon',
'ora' => 'orange',
);
$search_word = "a";
$search_result = array_filter($array, function($v, $k) use($search_word){
return strpos($v, $search_word) !== false || strpos($k, $search_word) !== false;
}, ARRAY_FILTER_USE_BOTH);
print_r($search_result);
输出:
Array
(
[app] => apple
[ban] => banana
[ora] => orange
)
答案 1 :(得分:1)
使用preg_grep
功能:
$array = array(
1 => 'apple',
2 => 'banana',
3 => 'lemon',
4 => 'orange'
);
print_r(preg_grep('/an/', $array));
// outputs Array ( [2] => banana [4] => orange )
答案 2 :(得分:1)
要同时搜索键和值,我认为最简单的方法是使用foreach循环。
$term = 'an'; // define your search term
foreach ($array as $key => $value) {
// check in both key and value using strpos
if (strpos($key, $term) !== false || strpos($value, $term) !== false) {
$result[$key] = $value; // add to search result if found
}
}