I have an nxn array, which recursively I'm trying to get certain value based on the following:
I would like to search for specific value (needle), in this case 'KEYVAL_TO_FIND'
if it is found, then, since that part of the array will always have the same structure, I would like to get 'MY_VALUE'
.
How could I achieve this? Thanks
An example of how the array look like (ignore the keys):
[0] = Array
(
[0] = Array
(
[0] = Array
[0] = KEYVAL_TO_FIND
[1] = Array
(
[0] = CONST
[1] = MY_VALUE
)
)
[1] = VAL
[2] = Array
(
[0] = FOO
[1] = BAR BAZ
)
)
-
@Brian Driscoll: I'm not familiar yet w/ recursionJoshD– JoshD2011年05月02日 14:19:18 +00:00Commented May 2, 2011 at 14:19
-
@JoshD: Here is a lengthy but understandable article on that topic devzone.zend.com/article/1235 - It's not the easiest programming idiom, but you picked an useful task to experiment with.mario– mario2011年05月02日 14:23:13 +00:00Commented May 2, 2011 at 14:23
-
possible duplicate of searching within all keys in a multidimensional array PHPAlix Axel– Alix Axel2011年05月02日 14:25:15 +00:00Commented May 2, 2011 at 14:25
1 Answer 1
a function I use...
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 && $val == $needle) || ($strict && $val === $needle) ) {
$path[] = $key;
return $path;
}
}
return false;
}
I hope you like it and use it :D have a nice day!!
answered May 2, 2011 at 14:17
lang-php