dynamisk lookup i multidimentionalt array
Hej Experter!Jeg har følgende array:
$myarr = array();
$myarr["level_0"] = array(
"task" => "eat",
"level_1" => array(
"name" => "john",
"surname" => "doe",
"level_2" => array(
"veggy" => "potatoes",
"meat" => "beef",
"source" => "white",
"level_3" => array(
"desert" => array("cheese" => "danablue")
)
)
)
);
----
Følgende funktion finder den nøjagtige "path" til hvorhenne en given key er henne recursivt i dette array.
function array_searchRecursive( $needle, $haystack, $strict=false, $path=array() )
{
if( !is_array($haystack) )
{
return false;
}
foreach( $haystack as $key => $val )
{
if( is_array($val) && $subPath = array_searchRecursive($needle, $val, $strict, $path) )
{
$path = array_merge($path, array($key), $subPath);
return $path;
}
elseif( (!$strict && $key == $needle) || ($strict && $key === $needle) )
{
$path[] = $key;
return $path;
}
}
return false;
}
----
For eksempel hvis jeg leder efter:
$result = array_searchRecursive("cheese", $myarr);
vil ovenstående funktion returnere et array med alle keys til "cheese"
result Array
(
[0] => level_0
[1] => level_1
[2] => level_2
[3] => level_3
[4] => desert
[5] => cheese
)
----
For at finde ud af hvilken ost "john doe" vil ha til desert, kunne man skrive:
echo $myarr["level_0"]["level_1"]["level_2"]["level_3"]["desert"]["cheese"]
og få responsen: "danablue"
----
Mit spørgsmål er nu: hvordan laver jeg programmatisk et forloop lookup i arrayet "$myarr" udfra dette resultat array? - Jeg vil IKKE bruge eval.
På forhånd tak!
:-)
