>我有一个这样的多维数组:
$testarray = array(
array(
'First name' => 'Johnny',
'Last name' => 'Milthers',
'Age' => '24'
),
array(
'First name' => 'Toby',
'Last name' => 'Thomson',
'Age' => '25'),
),
array(
'First name' => 'Jack',
'Last name' => 'Johnson',
'Age' => '25'),
);
如何传递诸如"John"之类的搜索字符串,以使数组$testarray仅包含第一个和最后一个数组?
我需要传递一个搜索词,如果任何键值包含该字符串,则返回整个子数组。
另外,如果我传递"杰克约翰逊",$testarray应该只包含最后一个数组。
- 这是可能的,还是我走错了路?数据库的正常搜索结果如何工作?
我一直在看很多堆栈溢出页面(和 PHP 手册 + 谷歌),但没有任何帮助,如果我发布的东西已经有答案,请评论我的链接。
非常感谢!
这是一种方法,请记住,只有当搜索数组直接嵌套在外部搜索数组中时,它才会起作用。
function search_array($text, $array) {
return array_filter($array, function($a) use($text){
return stristr(implode(" ", $a), $text);
});
}
http://sandbox.onlinephpfunctions.com/code/09e1187ccedba0804de5d797c350e218b05951cd
我还没有测试过这个,但这应该可以工作......
function find_in_array($search, $testarray) {
$pattern = '*'.$search.'*';
$array = array_filter($testarray, function($entry) use ($pattern) {
foreach($entry as $key=>$value) {
if (fnmatch($pattern, $value)) return true;
}
return false;
});
return $array;
}