in_array() and multidimensional array
in_array()
does not work on multidimensional arrays. You could write a recursive function to do that for you:
function in_array_r($needle, $haystack, $strict = false) { foreach ($haystack as $item) { if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) { return true; } } return false;}
Usage:
$b = array(array("Mac", "NT"), array("Irix", "Linux"));echo in_array_r("Irix", $b) ? 'found' : 'not found';
If you know which column to search against, you can use array_search() and array_column():
$userdb = Array( (0) => Array ( ('uid') => '100', ('name') => 'Sandra Shush', ('url') => 'urlof100' ), (1) => Array ( ('uid') => '5465', ('name') => 'Stefanie Mcmohn', ('url') => 'urlof5465' ), (2) => Array ( ('uid') => '40489', ('name') => 'Michael', ('url') => 'urlof40489' ));if(array_search('urlof5465', array_column($userdb, 'url')) !== false) { echo 'value is in multidim array';}else { echo 'value is not in multidim array';}
This idea is in the comments section for array_search() on the PHP manual;
This will work too.
function in_array_r($item , $array){ return preg_match('/"'.preg_quote($item, '/').'"/i' , json_encode($array));}
Usage:
if(in_array_r($item , $array)){ // found!}