Make your own in_array to go deeper

The function in_array allows you to search a value inside an array, but the problem is that it is not a recursive function, it means that if you have an array into an array, an the value you are looking for is inside it, the function will fail finding it.

Example
``` //our array in an array with its first value 0 \$array = array(array(0));```

``` ```

```//searching 0 in the array if(in_array(0, \$array)) echo 'ok'; else echo 'no'; ```
and of course it fails.

So the best is to make our own in_array function to be sure to match all the time, we do need recursion !
``` //I have taken the same prototype as the in_array function```

``` function r_in_array(\$needle, \$haystack, \$strict = false) { static \$found = false; foreach(\$haystack as \$line) { if(is_array(\$line)) r_in_array(\$needle, \$line, \$strict); else if(\$line == \$needle) { if(\$strict) { if(gettype(\$line) === gettype(\$needle)) \$found = true; } else \$found = true; } } ```

``` return \$found; } ```
This function calls itself to find, if there is, the value (\$needle) in the array (\$haystack) you give it. I added the \$strict which checks if the type is the same when set to true.

Now with examples
``` //well we want to be sure recursion works :p \$array = array(array(0, 2, array(array(array(array(1, array(4)))))), array(3), 0);```

``` ```

```//searching 4 (integer) in \$array if(r_in_array(4, \$array)) echo 'found'; else echo 'not found'; ```
It works !
``` //searching 4 (string) in \$array if(r_in_array("4", \$array)) echo 'found'; else echo 'not found'; ```
Works too !
``` //searching 4 (integer) in \$array if(r_in_array("4", \$array, true)) echo 'found'; else echo 'not found'; ```
It doesn’t work because we use the strict mode.

Voilà, you can use this function as you wish, enjoy 🙂