2011-12-30 13 views
14

वर्तमान में मैं 2 सरणी है:अगर 2 सरणियों कम से कम 1 बराबर मूल्य है जाँच हो रही है

array(1, 2, 3, 4); 
array(4, 5, 6, 7); 

मैं अगर वहाँ उन दोनों में कम से कम एक समान मूल्य है कैसे देख सकते हैं? (उपर्युक्त उदाहरण में 1 बराबर मान => 4 है, इसलिए फ़ंक्शन को सत्य वापस करना चाहिए)।

उत्तर

30

array_intersect()

कि सभी तर्कों में मौजूद हैं array1 के सभी मानों युक्त एक सरणी देता है। ध्यान दें कि कुंजी

$a = array(1, 2, 3, 4); 
$b = array(4, 5, 6, 7); 
$c = array_intersect($a, $b); 
if (count($c) > 0) { 
    var_dump($c); 
    //there is at least one equal value 
} 

संरक्षित कर रहे हैं आप

array(1) { 
    [3]=> 
    int(4) 
} 
+0

http://es2.php.net/manual/en/function.array-intersect.php इस की जाँच मिलता है। – Rafee

+0

फिर: 'अगर (गिनती ($ सी)> 0) कुछ करें(); ' – Alasdair

+2

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

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