首页 > 解决方案 > in_array 函数总是返回 false

问题描述

我有一个数组,当使用 in_array 检查对象是否存在时,它总是返回 false。

例如,这里是数组:

array:1 [
0 => "name1, name2, name3"
]

这就是我检查索引是否存在的方式

if(!in_array('name1', $array)) { return FALSE; } else { return TRUE;}

Name1 存在于我的数组中,但是我认为我在这里遗漏了一些小东西。

不确定它可能是什么,或者即使这个函数是用来检查的正确函数?预期结果是真实的,因为对象存在。

谢谢

标签: phparrays

解决方案


由于您的数组只有一个带有长字符串的项目,因此 in_array 会返回 false,因为没有完全匹配。
您可以做的是使用 preg_grep ,它是数组的正则表达式。

var_dump(preg_grep("/name1/i", $arr));

https://3v4l.org/dmvsR

您可以将它与 bool return 一起使用,如下所示:

if(preg_grep("/name1/i", $arr)){
    echo "true";
}else{
    echo "false";
}

因为如果没有找到 preg_grep 则返回空。
在 if() 中,空数组意味着 false。


推荐阅读