我有一个二维数组,如下所示:
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。我错过了什么?
答案 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"