Page 1 of 1
How To array_search in Multi Dimensional Array?
Posted: Thu Dec 22, 2011 10:44 am
by bgundal88
Hi, I have multi dimensional array like this :
Code: Select all
$families = array
(
"Griffin"=>array
(
"Peter",
"Lois",
"Megan"
),
"Quagmire"=>array
(
"Glenn"
),
"Brown"=>array
(
"Cleveland",
"Loretta",
"Junior"
)
);
and I have no idea how to display "Griffin" when "Peter" entered as variable. or "Brown" when "Loretta" entered.
I thought by using array_search function will help, but array_search seems need to be 'modified' when it's dealing with multi dimensional arrays.
please help… thanks!
Re: How To array_search in Multi Dimensional Array?
Posted: Thu Dec 22, 2011 1:53 pm
by tr0gd0rr
You'll have to iterate and look for the value. Is it always only 2 levels deep? If it could be deeper, you'll need a recursive find.
Re: How To array_search in Multi Dimensional Array?
Posted: Thu Dec 22, 2011 2:49 pm
by bgundal88
Yes, bro. Only 2 levels deep. Nothing else. Do you have some sample code to do it?
Re: How To array_search in Multi Dimensional Array?
Posted: Thu Dec 22, 2011 9:07 pm
by phpHappy
Code: Select all
<?php
$input="Glenn";
$output='';
$families = array
(
"Griffin"=>array
(
"Peter",
"Lois",
"Megan"
),
"Quagmire"=>array
(
"Glenn"
),
"Brown"=>array
(
"Cleveland",
"Loretta",
"Junior"
)
);
$keys=array_keys($families);
$num=count($keys);
$count=0; while($count<=$num-1) {
$count2=0;
$find=$keys[$count];
while(!empty($families[$find][$count2])) {
if($families[$find][$count2] == $input) {
$output=$keys[$count];
echo $input.' is '.$input.' '.$output.' is phpHappy';
$count=$num+2; break; }
$count2++; }
$count++; }
?>
Re: How To array_search in Multi Dimensional Array?
Posted: Fri Dec 23, 2011 12:07 am
by bgundal88
it works!! many thanks, phphappy! I love you!
Re: How To array_search in Multi Dimensional Array?
Posted: Fri Dec 23, 2011 1:05 pm
by tr0gd0rr
Woah, buddy, that is a lot of code! Try this:
Code: Select all
function lookupSurname($families, $firstName) {
foreach ($families as $surname => $names) {
if (in_array($firstName, $names)) {
return $surname;
}
}
return null;
}
echo lookupSurname($families, 'Junior'); // Brown