我似乎遇到了数组搜索错误。以下是我的代码。
$allowedTypes = array(
'image/gif',
'image/jpg',
'image/jpeg',
'image/png'
);
if(array_search("image/gif", $allowedTypes)) {
print "true";
} else {
print "false";
}
它总是打印错误。即使image / gif在允许类型列表中。
答案 0 :(得分:6)
array_search
返回数组中项的索引。在这种情况下,它返回整数0,当转换为bool时,它是假的。
如果你阅读了文档,你会在一个大红框中看到以下内容:
此函数可能返回布尔值FALSE,但也可能返回一个非布尔值,其值为FALSE,例如0或“”。有关更多信息,请阅读有关布尔值的部分。使用===运算符测试此函数的返回值。
您必须使用:
if (array_search("image/gif", $allowedTypes) !== false) {
// ...
}
或者,只是告诉数组是否包含该项,您可以使用in_array()
,它以布尔形式返回一个简单的yes / no:
if (in_array("image/gif", $allowedTypes)) {
// ...
}
答案 1 :(得分:2)
我认为这就是你要找的东西:
$allowedTypes = array(
'image/gif',
'image/jpg',
'image/jpeg',
'image/png'
);
if(in_array("image/gif", $allowedTypes)) {
print "true";
} else {
print "false";
}