我有一个数组,当使用in_array检查对象是否存在时,它总是返回false。
作为一个例子,这里是数组:
array:1 [
0 => "name1, name2, name3"
]
这就是我检查索引是否存在的方式
if(!in_array('name1', $array)) { return FALSE; } else { return TRUE;}
Name1存在于数组中,但是我想这里缺少一些小东西。
不知道可能是什么,或者不确定此功能是否是用于检查的正确功能?当对象存在时,预期结果为真。
谢谢
答案 0 :(得分:0)
由于您的数组只有一个带有长字符串的项目,所以in_array由于没有完全匹配而返回false。
您可以做的是使用preg_grep,它是数组的正则表达式。
var_dump(preg_grep("/name1/i", $arr));
您可以将其与布尔返回值一起使用:
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);