3

我有一个包含从 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 不?这可能是什么原因造成的?

4

2 回答 2

1

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

Falsearray_search没有找到针时返回

Nullarray_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 处找到。

于 2013-08-30T23:07:44.120 回答
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;
}
于 2013-08-30T22:42:34.840 回答