答案是否定的,
in_array()不适用于多维数组。您可以编写一个递归函数来为您执行此操作:
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;
}
用法:
$b = array(array("Mac","NT"),array("Irix","Linux"));
echo in_array_r("Irix",$b) ? 'found' : 'not found';
或者用下面方法也行:
function in_array_r($item,$array){
return preg_match('/"'.preg_quote($item,'/').'"/i',json_encode($array));
}
用法:
if(in_array_r($item,$array)){
// found!
}
还有一种方法,就是使用array_search()和array_column(),如下:
如果您知道要搜索哪个列,则可以使用array_search()和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';
}