2012-10-13 13 views
5

मेरे पास स्टॉक टिकर प्रतीकों का एक बड़ा array है, क्योंकि मैं एक स्टॉक मार्केट सिमुलेशन वेबएप लिखने वाली परियोजना के लिए हूं। मेरे सहायक कार्यों में से एक यह निर्धारित करने के लिए है कि दर्ज स्टॉक प्रतीक के लिए सरणी की जांच करके वैध है या नहीं। ऐसा करने के लिए, मैं array_search() का उपयोग कर रहा हूं। मेरे पास समस्या है किनारे के मामलों की जांच करके एक है। ऐसा लगता है कि खोज 0 वें तत्व को नहीं उठा रही है, भले ही यह अन्य तत्वों को पूरी तरह से ठीक करे।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 लौटाता है।

यहां 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 झूठा रिटर्न देता है, जबकि ?stock=GOOG जैसे कुछ सच है। किसी भी मदद के लिए धन्यवाद!

उत्तर

14

array_search() किसी को मिलने पर पहले मैच की कुंजी देता है। जब कहा गया कुंजी 0 है और आप इसे एक बूल में डाल देते हैं, तो यह झूठा हो जाएगा।

क्या आप क्या करना चाहते का उपयोग कर false की तुलना है not identical operator ===:

//if you don't need the index you can skip assigning it to a variable 
$index = array_search('AAC', $stock); 

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

अहह! मैंने देखा कि मैंने क्या किया। मैं पूरी तरह से भूल गया कि यह एक फाउंड() प्रकार के फ़ंक्शन के विपरीत इंडेक्स लौटाता है। बहुत बहुत धन्यवाद! – Saxophlutist

0

मैं अपने कोड की जाँच की और मैंने पाया एक समस्या इस पंक्ति में है

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

आप इसे कास्ट कर रहे हैं बूल और इसके कारण यह 0 वें तत्व के लिए कुछ भी नहीं देता है।

इसका कामकाजी उदाहरण http://codepad.viper-7.com/VPveZH

संबंधित मुद्दे