Reputation: 13
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
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