PHP:array_search返回null

时间:2013-08-30 22:24:00

标签: php sql arrays

我有一个包含从1到14的数字的常规数组,它是通过从SQL结果列中检索INT而生成的。

使用其他查询我将返回另一个INT。

我在我的阵列中搜索此INT。

$key = array_search("$roomNb", $freeRooms);

然而,当我试图回显此键时,没有任何内容出现。它是空的。

如果我使用循环回显$ freeRooms,我得到:

1
2
3
4
5
6
7
8
9
10
11
12
14

如果我回复$ roomNb,我会

5

所以我无法理解为什么我没有得到任何回报。我应该期待4关键吗?可能导致这种情况的原因是什么?

2 个答案:

答案 0 :(得分:1)

最有可能$keyfalse,当发送到echo时,它将显示为空。相反,您应该使用var_dump来确定$key

的值

False在未找到针时从array_search返回

Null仅在您传递给array_search的参数无效

时返回

http://php.net/manual/en/function.array-search.php

使用http://writecodeonline.com/php/

在此处测试此代码
echo false;
echo null;
var_dump(false);
var_dump(null);

$code = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14);
$roomNb = 5;

var_dump(array_search("$roomNb", $code));

应该工作得很好。 echo将不输出任何内容。 var_dump将输出内容。关键是4点。

答案 1 :(得分:0)

假设您的数组将始终包含连续的数字,并且您可以验证您的第二个SQL调用返回其中一个数字,我会说类似

$value = $freeRooms[$roomNb] 

我个人不熟悉array_search的执行方式,但是如果你想编写自己的,我认为它看起来像这样

function IndexOf($searchValue,$array)
{
    $i = 0;
    for( $i = 0; $i < count($array); $i++ ) 
        if( $array[$i] == $searchValue )
            return $i;
}