我有一个像这样的阵列。
$array = Array(
[0] => Array
(
[name] => Eve Greenhaw
[id] => 456564765
)
[1] => Array
(
[name] => Tyrone Hallberg
[id] => 5467652534
)
[2] => Array
(
[name] => Julio Torbert
[id] => 254564564
)
[3] => Array
(
[name] => John Torbert
[id] => 5462253455
)
[4] => Array
(
[name] => John Kimmell
[id] => 4525462
)
)
我想搜索数组并返回名称和ID。例如,如果用户搜索“John”,我希望函数返回键3和4.如果用户只搜索“J”,则该函数应返回键2,3和4。
由于
答案 0 :(得分:5)
一种可能性是array_filter
:
array_filter (array $ input ,callback $ callback )
迭代输入数组中的每个值,并将它们传递给回调函数。如果回调函数返回true,则输入中的当前值将返回到结果数组中。数组键被保留。
$array
的每个成员本身就是一个数组,所以你可以这样做(假设你正在搜索名称和id):
$query = 'whatever';
function single_search($member) {
global $query;
$in_name = strpos($member['name'], $query);
$in_id = strpos($member['id'], $query);
return is_numeric($in_name) || is_numeric($in_id);
}
$filtered = array_filter($array, 'single_search');
$filtered
数组包含包含查询的所有名称/ ID对。但如果您只对键感兴趣,则可以再使用一个函数:array_keys
。它可以返回$filtered
中的键数组,这将是与查询等匹配的所有键等等:
$matched_keys = array_keys($filtered);
祝你好运。
答案 1 :(得分:1)
在foreach()中迭代$数组并使用stripo()或preg_match()来查找匹配的记录并返回键。非常简单。