【问题标题】:array_search() not finding 0th element [duplicate]array_search() 没有找到第 0 个元素 [重复]
【发布时间】:2012-10-03 23:01:24
【问题描述】:

我有大量 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 个元素。搜索 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. 您可以通过编辑 url 中的查询字符串来更改股票。 正如我所说,?stock=AAC 返回 false,而 ?stock=GOOG 之类的返回 true。 感谢您的帮助!

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    array_search() 返回第一个匹配项的键(如果找到)。当所说的键为 0 并且你将它转换为布尔值时,它将变为 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!
    }
    

    【讨论】:

    • 啊!我看到我做了什么。我完全忘记了它返回索引,而不是 isFound() 类型的函数。非常感谢!
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      • 2013-12-29
      • 2015-04-22
      • 2015-12-04
      • 2012-11-01
      相关资源
      最近更新 更多