2012-04-05 12 views
174

मुझे सिर्फ यह जांचने की आवश्यकता है कि किसी सरणी में एक से अधिक तत्व हैं या नहीं। मैं इसे इस तरह से करने के लिए कोशिश कर रहा हूँ:यह जांचने का एक बेहतर तरीका है कि किसी सरणी में एक से अधिक तत्व हैं या नहीं?

if (isset($arr['1'])) 

अन्य परंपरागत तरीके से

if (sizeof($arr)>1) 

दोनों में से कौन बेहतर है? ऐसे बैठकों में, मुझे दो वैकल्पिक तरीकों के बीच कैसे न्याय करना चाहिए? क्या कोई प्रदर्शन चेक मीटर मापने के लिए उपलब्ध है जो बेहतर है?

+0

मान लीजिए कि $ arr पहले से ही एक सरणी के लिए मान्य है! इसका मतलब यह है कि अगर स्थिति की जांच हो तो इससे पहले, इसकी जांच पहले से ही की गई है। – tuxnani

+0

http://phparraylength.com/ –

उत्तर

336

उपयोग इस

if (sizeof($arr) > 1) { 
    .... 
} 

या

if (count($arr) > 1) { 
    .... 
} 

sizeof()count() के लिए एक उपनाम है, वे एक ही काम करते हैं।

संपादित करें: प्रश्न के दूसरे भाग का उत्तर देना: प्रश्न में कोड की दो पंक्तियाँ वैकल्पिक तरीकों नहीं हैं, वे अलग अलग कार्य करते हैं। पहला चेक करता है कि $arr['1'] पर मान सेट किया गया है, जबकि दूसरा सरणी में तत्वों की संख्या देता है।

+8

@ एनबी: प्रश्न संपादित किया गया था, प्रारंभिक कोड 'if (sizeof ($ arr)) था, जिसका अनुवाद 'if (sizeof ($ arr) == 1)' - स्पष्ट रूप से है कि ' टी जांचें कि सरणी में ** एक से अधिक ** तत्व हैं या नहीं। यह उत्तर सही है, और मुझे डाउन-वोट करने का कोई कारण नहीं दिखता है, इसलिए मेरा अपवर्त। –

+2

मैं स्वीकार करूंगा कि मैंने प्रश्न के मूल संस्करण पर नज़र डाली है, जिसका उत्तर एक उत्तर है। संदर्भ अलग है, और मैं जवाब को गलत के रूप में लेबल करने के लिए क्षमा चाहता हूं। यदि आप मूल प्रश्न को देखते हैं तो यह गलत नहीं है। संपादित प्रश्न के लिए यह बुरा है। –

+0

प्रश्न में दूसरा कोड स्निपेट जांच करेगा कि $ arr ['1'] पर मान सेट है या नहीं, यह गिनती के बारे में चिंतित नहीं है। इसे उत्तर में संबोधित नहीं किया गया था, बस सोचा कि मैं इसका जिक्र करूँगा और आशा करता हूं कि उत्तर के लेखक उत्तर को अपडेट करेंगे :)। –

3

isset() केवल चेक के एक चर सेट है, तो .. आकार या क्या कोई लेना देना नहीं मिला है सरणी

44

if(is_array($arr) && count($arr) > 1)

बस सुनिश्चित करें कि $ आगमन वास्तव में एक सरणी है होना करने के लिए होता है।

  1. 1 कम चरित्र को एक नज़र में
  2. sizeof टाइप करने के लिए स्मृति के मामले में एक सरणी के आकार मतलब हो सकता है, भी:

    sizeofcount के उपनाम है, मैं गिनती उपयोग करने के लिए है क्योंकि पसंद करते हैं तकनीकी :(

+0

'is_array' आवश्यक नहीं है। –

+0

@AlixAxel hmm, लेकिन अगर $ arr एक स्ट्रिंग है, तो गिनती ($ arr) उस स्ट्रिंग की वर्ण गणना वापस कर देगी, इसलिए –

+0

नहीं, यदि '$ arr' स्ट्रिंग है, तो यह' 1' वापस आ जाएगा। –

2

मुझे लगता है $ आगमन एक सरणी है तो यह आपके

if (sizeof($arr) > 1) ... 
के लिए क्या देख रहे है
5
if (count($arr) >= 2) 
{ 
    // array has at least 2 elements 
} 

sizeof()count() के लिए उपनाम है। दोनों गैर-सरणी के साथ भी काम करते हैं, लेकिन वे केवल 1 से अधिक मान वापस कर देंगे यदि तर्क या तो सरणी है या Countable ऑब्जेक्ट है, तो आप इसके साथ बहुत सुरक्षित हैं।

5

जाहिर है count($arr) > 1 (sizeofcount के लिए केवल एक उपनाम है) का सबसे अच्छा समाधान है। आपकी सरणी की संरचना के आधार पर, कई तत्व हो सकते हैं लेकिन $array['1'] तत्व नहीं हो सकता है।

1

पहली विधि if (isset($arr['1'])) एक साहचर्य सरणी पर काम नहीं करेगा बताते हैं।

उदाहरण के लिए, निम्न कोड प्रदर्शित करता है "नहीं, एक से अधिक नहीं।"

$arr = array(
    'a' => 'apple', 
    'b' => 'banana', 
); 

if (isset($arr['1'])) { 
    echo "Yup, more than one."; 
} else { 
    echo "Nope, not more than one."; 
} 
6

मैं बजाय sizeOf()sizeOf() के रूप में केवल count() के उपनाम है और कई अन्य भाषाओं में एक ही मतलब यह नहीं है count() समारोह पसंद करते हैं। आवंटित स्मृति की मात्रा को वापस करने के लिए कई प्रोग्रामर sizeof() की अपेक्षा करते हैं।

+1

यहां भी समझाया गया। http://stackoverflow.com/questions/3974385/php-array-count-or-sizeof यह मूल्यवान है क्योंकि यह प्रश्न अब 'आकार' बनाम 'गिनती' के लिए शीर्ष Google हिट है –

4

एक सरणी खाली() आकार की जांच के लिए आकार() से बेहतर है।

यदि सरणी में बड़ी मात्रा में डेटा है। सरणी के आकार की गणना करने में अधिक समय लगेगा। लेकिन खाली जांच हमेशा आसान है।

//for empty 
    if(!empty($array)) 
    echo 'Data exist'; 
    else 
    echo 'No data'; 


//for sizeof 
if(sizeof($array)>1) 
     echo 'Data exist'; 
else 
    echo 'No data'; 
संबंधित मुद्दे

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