搜索php数组

时间:2011-04-09 17:26:33

标签: php arrays

我有一个像这样的阵列。

$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。

由于

2 个答案:

答案 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()来查找匹配的记录并返回键。非常简单。