У меня есть большой 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
Etc и т. Д. Как говорилось ранее, он отлично работает для других элементов, а не для 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=GOOG
?stock=AAC
возвращает false, а что-то вроде ?stock=GOOG
– это правда. Спасибо за любую помощь!
array_search()
возвращает ключ первого совпадения, если он найден. Когда указанный ключ равен 0, и вы бросаете его в bool, он станет ложным.
То, что вы хотите сделать, это сравнить его с 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! }
Я проверил ваш код, и я обнаружил, что одна проблема в этой строке
print((bool)array_search('AAC', $stock));
вы отбрасываете его на bool, и из-за этого он ничего не возвращает для 0-го элемента.
его рабочий пример http://codepad.viper-7.com/VPveZH