PHP Multidimension in_array

时间:2016-05-09 13:54:27

标签: php arrays multidimensional-array

我有一个二维数组,如下所示:

Array
(
    [google.fr] => Array
        (
            [0] => Array
                (
                    [0] => google.de
                    [1] => microsoft.de
                    [2] => google.com
                    [3] => apple.de
                )

        )

我现在需要检查的是,如果来自第一维的字符串 - 这里google.fr等于我正在比较的另一个字符串。 我在StackOverflow中找到了另一个提供以下功能的线程:

function in_array_r($needle, $haystack, $strict = true) {
        foreach ($haystack as $item) {
            if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
                return true;
            }
        }
        return false;
}

我称之为:

if (in_array_r($row->name, $linkResult)) {
    echo "<span style=color:red; margin-left:15px;> <b>!</b></span>";
}

但无论$row->name中的内容如何,​​都会返回false。我错过了什么?

1 个答案:

答案 0 :(得分:1)

如你所说,google.fr&#34;来自第一个维度的字符串&#34;
它是一个数组键,因此您应该将输入字符串与键进行比较(至少对于第一遍)。
更改您的功能代码,如下所示:

function in_array_r($needle, $haystack, $strict = true) {
        foreach ($haystack as $k => $item) {
            if (($strict ? $k === $needle : $k == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
                return true;
            }
        }
        return false;
}

var_dump(in_array_r('google.fr', $linkResult));  // outputs "true"