繁体   English   中英

PHP多维in_array

[英]PHP Multidimension in_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。 我想念什么?

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

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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM