5

我有大量array的股票代码,因为我正在编写一个股票市场模拟 web 应用程序的项目。我的辅助函数之一是通过检查符号数组来确定输入的股票是否有效。为此,我正在使用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 个元素。FALSE搜索 AAC 时返回。

这是我正在使用的 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>');
                }
            ?>

这是我正在使用的测试网页。 您可以通过编辑 url 中的查询字符串来更改股票。正如我所说,?stock=AAC返回假,而类似的东西?stock=GOOG是真的。谢谢你的帮助!

4

2 回答 2

17

array_search()如果找到一个,则返回第一个匹配项的键。当所述键为 0 并且您将其转换为布尔值时,它将变为 false。

您想要做的是将其与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!
}
于 2012-10-13T06:57:19.237 回答
0

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

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

您将其转换为 bool ,因此它不会为第 0 个元素返回任何内容。

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

于 2012-10-13T07:00:48.987 回答