Hello,
habe mal so zum Spaß einen Lösungsansatz dafür erzeugt:
<?php ### find_deep_key.php ###
einen Arraykey finden für einen Wert, der in einem verzweigten Array versteckt ist
$needle = 'treffer';
$_haystack = array();
$_haystack['first'] = array();
$_haystack['second'] = array();
$_haystack['third'] = array();
$_haystack['forth'] = $needle;
$_haystack['fifth'] = array();
$_haystack['first']['eins'] = 'leider';
$_haystack['first']['zwei'] = 'kein';
$_haystack['first'][3] = 'treffer';
$_haystack['second'][0] = array();
$_haystack['second'][1] = $needle;
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_haystack,1));
echo "</pre>\r\n";
#-----------------------------------------------------------
function find_hits($_haystack, $needle, &$_hits, $keyrank)
{
foreach($_haystack as $key => $value)
{
if (is_array($value))
{
find_hits($value, $needle, $_hits, $keyrank."[$key]");
}
elseif ($value == $needle)
{
$_hits[] = $keyrank."[$key]";
}
}
}
#-----------------------------------------------------------
$_hits = array();
$keyrank = '';
$keyrank = '$_haystack';
find_hits($_haystack, $needle, $_hits, $keyrank);
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_hits,1));
echo "</pre>\r\n";
?>
Das ergibt dann:
Array
(
[first] => Array
(
[eins] => leider
[zwei] => kein
[3] => treffer
)
[second] => Array
(
[0] => Array
(
)
[1] => treffer
)
[third] => Array
(
)
[forth] => treffer
[fifth] => Array
(
)
)
Array
(
[0] => $_haystack[first][3]
[1] => $_haystack[second][1]
[2] => $_haystack[forth]
)
Ist natürlich nur eine Grundidee und noch optimierungsbedürftig.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg