搜索php数组

lik*_*ats 0 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
            )

    )
Run Code Online (Sandbox Code Playgroud)

我想搜索数组并返回名称和ID.例如,如果用户搜索"John",我希望函数返回键3和4.如果用户只搜索"J",则该函数应返回键2,3和4.

谢谢

sdl*_*rhc 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');
Run Code Online (Sandbox Code Playgroud)

$filtered数组包含包含查询的所有名称/ ID对.但如果您只对感兴趣,可以再使用一个功能:array_keys.它可以返回键的数组$filtered,这将是与查询等匹配的所有键等等:

$matched_keys = array_keys($filtered);
Run Code Online (Sandbox Code Playgroud)

祝好运.