array_search()没有找到第0个元素

时间:2012-10-13 06:53:52

标签: php arrays

我有一个很大的array股票代码符号,因为我是一个编写股票市场模拟webapp的项目。我的一个辅助函数是通过检查符号的数组来确定输入的股票是否有效。为此,我使用的是array_search()。 我遇到的问题是检查边缘情况。似乎搜索没有拾取第0个元素,即使它完全没有拾取其他元素。 这是数组的一部分:

[0] => AAC
[1] => AACC
[2] => AACOU
[3] => AACOW
[4] => AAIT
[5] => AAME
[6] => AAON
[7] => AAPL
[8] => AAWW
[9] => AAXJ
[10] => ABAX
[11] => ABCB
[12] => ABCD
[13] => ABCO
[14] => ABFS
[15] => ABIO
[16] => ABMD
[17] => ABTL
[18] => ABVA
[19] => ACAD
[20] => ACAS
[21] => ACAT
[22] => ACCL

等等 如前所述,它适用于其他元素,而不是第0个。搜索AAC时会返回FALSE

这是我正在使用的PHP代码。

<?php   
                if(isset($_GET[stock])) {
                    $ticker = $_GET[stock];
                    $ticker = trim($ticker);
                    print("<pre>Ticker is $ticker</pre>");

                    print("Validity: " .        Stock::isValidStock($ticker));

                    print('<pre>');
                    $stock = Stock::getStockList();
                    print_r($stock);
                    print((bool)array_search('AAC', $stock));
                    print('</pre></br>');
                }
            ?>

Here is the test web page I'm using. 您可以通过编辑网址中的查询字符串来更改库存。 正如我所说,?stock=AAC返回false,而像?stock=GOOG这样的东西是真的。 谢谢你的帮助!

2 个答案:

答案 0 :(得分:16)

array_search()返回第一个匹配项的密钥(如果找到)。当所述密钥为0并且将其转换为bool时,它将变为false。

您要做的是使用not identical operator ===

将其与false进行比较
//if you don't need the index you can skip assigning it to a variable
$index = array_search('AAC', $stock); 

if ($index !== false) 
{
    // found!
}

答案 1 :(得分:0)

我检查了你的代码,我发现这一行有一个问题

 print((bool)array_search('AAC', $stock));

你将它投射到bool,因此它不返回第0个元素。

其工作示例http://codepad.viper-7.com/VPveZH