in_array函数始终返回false

时间:2019-04-21 20:21:24

标签: php arrays

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

作为一个例子,这里是数组:

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

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

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

Name1存在于数组中,但是我想这里缺少一些小东西。

不知道可能是什么,或者不确定此功能是否是用于检查的正确功能?当对象存在时,预期结果为真。

谢谢

2 个答案:

答案 0 :(得分:0)

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

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

https://3v4l.org/dmvsR

您可以将其与布尔返回值一起使用:

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

由于未找到任何内容,因此preg_grep返回空。
空数组在if()中表示false。

答案 1 :(得分:0)

您的数组是一个元素,它是一个字符串,它不包含多个元素。如果要使用in_array(),它必须是一个数组-而不是字符串。

有几种不同的实现方法,一种是通过在元素上使用explode()使其成为数组,然后使用in_array()

您也可以返回in_array()的值,而不用自己运行检查-该函数的返回值是布尔值true / false

$array = array("name1, name2, name3");
$parts = explode(", ", $array[0]);
return in_array("name1", $parts);