array_search出错

时间:2010-08-30 13:07:02

标签: php

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

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

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

2 个答案:

答案 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";
}