मैं इस सवाल पर अपने 2 सेंट जोड़ना चाहता था, क्योंकि मुझे बीच का रास्ता याद आ रहा था।
जैसा कि पहले ही बताया isset()
गया है कि कुंजी के मूल्य का मूल्यांकन करेंगे तो यह वापस आ जाएगा false
यदि वह मान वह है null
जहां array_key_exists()
केवल जांच करेगा कि कुंजी सरणी में मौजूद है या नहीं।
मैंने PHP 7 का उपयोग करते हुए एक साधारण बेंचमार्क चलाया है, जो परिणाम दिखाते हैं कि पुनरावृत्ति को पूरा करने में लगने वाला समय है:
$a = [null, true];
isset($a[0]) # 0.3258841 - false
isset($a[1]) # 0.28261614 - true
isset($a[2]) # 0.26198816 - false
array_key_exists(0, $a) # 0.46202087 - true
array_key_exists(1, $a) # 0.43063688 - true
array_key_exists(2, $a) # 0.37593913 - false
isset($a[0]) || array_key_exists(0, $a) # 0.66342998 - true
isset($a[1]) || array_key_exists(1, $a) # 0.28389215 - true
isset($a[2]) || array_key_exists(2, $a) # 0.55677581 - false
array_key_isset(0, $a) # 1.17933798 - true
array_key_isset(1, $a) # 0.70253706 - true
array_key_isset(2, $a) # 1.01110005 - false
मैंने इस कस्टम फ़ंक्शन के परिणामों को इस बेंचमार्क के साथ पूरा करने के लिए जोड़ा है:
function array_key_isset($k, $a){
return isset($a[$k]) || array_key_exists($k, $a);
}
जैसा कि देखा गया है और पहले से बताया गया isset()
है कि यह सबसे तेज़ तरीका है, लेकिन अगर मूल्य है तो यह गलत हो सकता है null
। यह अवांछित परिणाम दे सकता है और आमतौर पर किसी को इसका उपयोग करना चाहिए array_key_exists()
यदि यह मामला है।
हालाँकि एक बीच का रास्ता है और वह उपयोग कर रहा है isset() || array_key_exists()
। यह कोड आम तौर पर तेज फ़ंक्शन का उपयोग करता है isset()
और यदि केवलisset()
गलत रिटर्न देता है तोarray_key_exists()
सत्यापन के लिए उपयोग करें। ऊपर दी गई तालिका में दिखाया गया है, यह सीधे सादे कॉलिंग के रूप में तेज़ है isset()
।
हां, इसे लिखना और इसे किसी फ़ंक्शन में लपेटना थोड़ा अधिक धीमा है, लेकिन बहुत आसान है। यदि आपको प्रदर्शन के लिए इसकी आवश्यकता है, तो बड़े डेटा की जांच करना, आदि इसे पूर्ण लिखें, अन्यथा यदि इसका 1 बार उपयोग किया जाता है जो फ़ंक्शन में बहुत मामूली ओवरहेड array_key_isset()
नगण्य है।