3

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
 )
 )
asked May 2, 2011 at 14:15
3
  • @Brian Driscoll: I'm not familiar yet w/ recursion Commented 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. Commented May 2, 2011 at 14:23
  • possible duplicate of searching within all keys in a multidimensional array PHP Commented May 2, 2011 at 14:25

1 Answer 1

2

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
0

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.