array_search出错

Jam*_*ond 1 php

我似乎遇到了数组搜索错误.以下是我的代码.

$allowedTypes = array(
    'image/gif',
    'image/jpg',
    'image/jpeg',
    'image/png'
);
if(array_search("image/gif", $allowedTypes)) {
    print "true";
} else {
    print "false";
}
Run Code Online (Sandbox Code Playgroud)

它总是打印错误.即使image/gif在允许类型列表中.

mea*_*gar 6

array_search返回数组中项的索引.在这种情况下,它返回整数0,当转换为bool时,它是false.

如果你阅读了文档,你会在一个大的红色框中看到以下内容:

此函数可能返回布尔值FALSE,但也可能返回非布尔值,该值的计算结果为FALSE,例如0或"".有关更多信息,请阅读有关布尔值的部分.使用===运算符测试此函数的返回值.

你必须使用:

if (array_search("image/gif", $allowedTypes) !== false) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

或者,为了简单地告诉数组是否包含该项,您可以使用in_array()哪个以布尔形式返回一个简单的yes/no:

if (in_array("image/gif", $allowedTypes)) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)