dhaval makwana
dhaval makwana

Reputation: 13

How to search value in multidimensional array by all key and get key - value of matched data php?

Array
(
    [0] => Array
        (
            [ID] => 287
            [fname] => Vivek
            [sname] => Makwana
            [serial] => 72
        )

    [1] => Array
        (
            [ID] => 288
            [fname] => Vishal
            [sname] => Makwana
            [serial] => 87
        )

    [2] => Array
        (
            [ID] => 289
            [fname] => Nilesh
            [sname] => Desai
            [serial] => 98
        )
)

I want to get ID of serached data in array, like if I search 'vi' then array matches 2 values in key fname, values 'Vivek' and 'Vishal'.

So I want only key [ID] of matched data 287 and 288.

How can I get this ID of matched values?

Upvotes: 0

Views: 102

Answers (1)

RiggsFolly
RiggsFolly

Reputation: 94642

My guess is you are trying to find a magic builtin function, there are none.

Simply loop over the array and test the fields you are interested in to see if the value you are interested in is in there. I use stripos() so it will ignore case, so it will match vi or Vi or VI or even vI

$array = [  ['ID' => 287, 'fname' => 'Vivek', 'sname' => 'Makwana', 'serial' => 72],
            ['ID' => 288, 'fname' => 'Vishal', 'sname' => 'Makwana', 'serial' => 73],
            ['ID' => 289, 'fname' => 'Nilesh', 'sname' => 'Nilesh', 'serial' => 75]
        ];


function search($array, $for) 
{
    $results = [];

    foreach ( $array as $arr) {
        $a = stripos($arr['fname'], $for);
        $b = stripos($arr['sname'], $for);
        if ( $a !== FALSE || $b !== FALSE ) {
             // save the id
             $results[] = $arr['ID']; 
        }
    }
    return $results;
}


print_r(search($array, 'vi'));

RESULTS

Array
(
    [0] => 287
    [1] => 288
)

Upvotes: 1

Related Questions