本文介绍了in_array() 和多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 in_array() 来检查一个值是否存在于如下数组中,

I use in_array() to check whether a value exists in an array like below,

$a = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $a))
{
    echo "Got Irix";
}

//print_r($a);

但是多维数组呢(下面) - 我如何检查该值是否存在于多数组中?

but what about an multidimensional array (below) - how can I check that value whether it exists in the multi-array?

$b = array(array("Mac", "NT"), array("Irix", "Linux"));

print_r($b);

或者我不应该在涉及多维数组时使用 in_array()?

or I shouldn't be using in_array() when comes to the multidimensional array?

推荐答案

in_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;
}

用法:

$b = array(array("Mac", "NT"), array("Irix", "Linux"));
echo in_array_r("Irix", $b) ? 'found' : 'not found';

这篇关于in_array() 和多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-03 10:30