2015-06-15 2 views
10

यहां कुछ समय है जब मैं PHP में बहुत कुछ करता हूं। एक घास के मैदान में एक सुई के लिए खोज रहे हैं।वस्तुओं की खोज करते समय जटिलता को कम करने के लिए सरणी में कुंजी के रूप में मानों का उपयोग

$names = [ 
    'Mike', 
    'John', 
    'Dave', 
    'Tony' 
]; 

$gotDave = in_array('Dave', $names); 

in_array का रनटाइम ओ (एन) है जहां एन तत्वों की संख्या है।

मैं अक्सर इस तरह दिखने के लिए अपनी लुकअप डेटा संरचना सेटअप करता हूं।

$names = [ 
    'Mike' => true, 
    'John' => true, 
    'Dave' => true, 
    'Tony' => true 
]; 

$gotDave = isset($names['Dave']); 

रनटाइम ओ (1) है क्योंकि PHP में एसोसिएटिव सरणी एक हैशप है।

कुछ सवाल:

  • मैं इस करना चाहिए? क्या यह अच्छा अभ्यास है?
  • वहाँ दाहिने हाथ की सवारी
+2

में array_key_exists() बजाय isset() उपयोग करने के लिए व्यक्तिगत तौर पर मैं इस गलती नहीं कर सका होगा। – Pogrindis

+0

जिज्ञासा से बाहर: आपका मतलब क्या है "* in_array का रनटाइम 'ओ (एन)' * "है? 'ओ' के लिए क्या खड़ा है? – D4V1D

+0

@ डी 4 वी 1 डी एन = सरणी –

उत्तर

1

के लिए एक बेहतर मूल्य हां, यह एक महान समाधान है। वास्तव में, इस प्रकार अधिकांश प्रोग्रामिंग भाषाओं के मूल पुस्तकालयों में सेट्स लागू किए जाते हैं - मेरे सिर, पायथन, रूबी और जावा के शीर्ष पर उन्हें इस तरह से करें। गो भाषा एक सेट प्रदान नहीं करती है, और सिर्फ आपको वह करने के लिए कहती है जो आपने किया है।

मैं सत्य `` सत्य 'के अलावा किसी अन्य मूल्य का उपयोग करने के किसी भी कारण के बारे में नहीं सोच सकता। यह सिर्फ समझ में आता है।

-1

आप in_array जो मूल्यों

लिए जाँच करता है के विपरीत, सरणी के प्रमुख के लिए जाँच करने array_key_exists() उपयोग कर सकते हैं आप अपने मामले

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