答案是否定的,

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\';
}
收藏 打印