PHP中的数组搜索问题

时间:2011-01-22 06:27:11

标签: php arrays

我没有发现程序中可能出现的问题。

我有一个像这样的数组

$arr = array("1", "urgent", "4", "low", "15", "avg");

当我使用

搜索此数组时
$key = array_search("4", $arr);// Working

它给了我该元素的索引;

但是当我搜索“1”时,它并没有给我任何索引。

$key = array_search("4", $arr); // Not working here - for searching "1"

可能是什么问题。

谢谢

4 个答案:

答案 0 :(得分:5)

http://ideone.com/e1n3r您的代码运行正常。它返回key == 0,这是键,其中存储“1”。

要获得0和false之间的差异,您应使用===运算符,或其相反的!==

$arr = array("1", "urgent", "4", "low", "15", "avg");

$key1 = array_search("1", $arr); 
var_dump($key1 === false);  // false (value exists)
var_dump($key1 !== false);  // true (value exists)

$key21 = array_search("21", $arr); 
var_dump($key21 === false); // true  (value does not exist)
var_dump($key21 !== false); // false (value does not exist)

答案 1 :(得分:0)

array_search返回数组的键值。

    $arr = array("1", "urgent", "4", "low", "15", "avg");
    $key = array_search("4", $arr); 
   // give output is 2 which is key value 
    $key = array_search("1", $arr);
   //give output is 0 which is key value

答案 2 :(得分:0)

请记住,0在php中被评估为FALSE

所以..

if($index = array_search("1",$arr)) {
    //will actually evaluate to false
}

如果您以这种方式使用它并认为它不起作用,因为条件在技术上没有失败,则值被评估为FALSE

答案 3 :(得分:0)

我认为你以错误的方式使用$key$key = 0现在,如果你做布尔评估,它将作为假。您应该使用if($key >= 0)if(is_int($key))

之类的内容