数组搜索不知道搜索

时间:2014-06-20 11:06:09

标签: php arrays conditional-statements

我有这个数组:

include("config.php");
$start = "2014-06-20 08:00:00";
$data = mysql_query ("select * from evenement WHERE start = '$start'");
$zaznam = mysql_fetch_array ($data);
while($zaznam = mysql_fetch_array ($data))
{
 $arr2[] = $zaznam["resourceId"];   //store query values in second array

}

如果我回复$ arr2,我得到这个:

Array ( [0] => STK1 )

现在我为array_search做了条件:

if (array_search('STK1', $arr2)) {
    echo "Arr2 contains STK1 <br>";
}
else {
    echo "Arr2 not contains STK1 <br>";
}

我得到 Arr2不包含STK1 怎么可能?我做错了什么?

2 个答案:

答案 0 :(得分:2)

这对PHP来说是完全正确的行为。

返回值的文档说:

Returns the key for needle if it is found in the array, FALSE otherwise.

在你的情况下,你得到0,在if。

中评估为false

您必须使用!==运算符检查值是否为false。

if (array_search('STK1', $arr2) !== false) {
    echo "Arr2 contains STK1 <br>";
}
else {
    echo "Arr2 not contains STK1 <br>";
}

答案 1 :(得分:1)

来自array_search documentation

  

此函数可能返回布尔值FALSE,但也可能返回非布尔值,其值为FALSE。有关更多信息,请阅读有关布尔值的部分。使用===运算符测试此函数的返回值。

array_search返回0,因为它在数组的索引0处找到匹配项。这是评价为假。

而是尝试:

if (array_search('STK1', $arr2) !== false) {
    echo "Arr2 contains STK1 <br>";
}
else {
    echo "Arr2 not contains STK1 <br>";
}