2010-08-30 94 views
1

我似乎在数组搜索中遇到了错误。以下是我的代码。array_search发生错误

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

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

+0

i n_ar​​ray()似乎工作。 – 2010-08-30 13:10:53

回答

6

array_search返回数组中项目的索引。在这种情况下,它返回整数0,当它转换为布尔值时,它是假的。

如果您想阅读文档,你会看到在一个大红色的框以下:

这个函数可以返回布尔值FALSE,但也可能返回的值是一个非布尔值FALSE,如0或“”。有关更多信息,请阅读布尔部分。使用===运算符来测试此函数的返回值。

您必须使用:

if (array_search("image/gif", $allowedTypes) !== false) { 
    // ... 
} 

或者,简单地说,如果数组包含的项目,你可以使用in_array()它不会返回一个简单的是/否的布尔形式:

if (in_array("image/gif", $allowedTypes)) { 
    // ... 
} 
+1

啊哈!非常有意义。无论如何,我已经使用了in_array(),这似乎是一个更合乎逻辑的功能。 谢谢 – 2010-08-30 13:11:49

2

我认为这就是你要找的东西:

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