php जाँच करें कि क्या सरणी में अन्य सरणी से सभी सरणी मान हैं


110
$all = array
(
    0 => 307,
    1 => 157,
    2 => 234,
    3 => 200,
    4 => 322,
    5 => 324
);
$search_this = array
(
    0 => 200,
    1 => 234
);

मैं यह पता लगाना चाहूंगा कि क्या $ सभी में सभी $ search_this मान हैं और सही या गलत लौटाते हैं। किसी भी विचार कृपया?



@VishalKumarSahu काफी डुप्लिकेट नहीं है: आपके दिए गए लिंक को जाँचना होगा कि क्या कोई तत्व किसी अन्य सरणी में समाहित है, नहीं अगर सभी तत्व दूसरे में निहित हैं।
स्टीफन

जवाबों:


159

पर देखो array_intersect ()

$containsSearch = count(array_intersect($search_this, $all)) == count($search_this);

11
आप जानते हैं कि आप दोनों count()कॉल को छोड़ सकते हैं ?
१५'१३

1
@Wrikken मानों को पुनः प्राप्त नहीं किया जा सकता है array_intersect()? मेरा मतलब है, ['a', 'b'] != ['b', 'a']
sbichenko

4
और फिर भी: सरणी तुलना : " ==सही है अगर $ a और $ b में समान कुंजी / मान जोड़े हैं।" , इसलिए आदेश भी कोई फर्क नहीं पड़ता ( ===उस के लिए उपयोग )
Wrikken

2
यह उत्तर मानता है कि $ सभी सरणी में केवल अनन्य मूल्य हैं। यदि यह मामला नहीं है, तो कोई array_intersects फ़ंक्शन में $ सभी सरणी पर array_unique फ़ंक्शन का उपयोग कर सकता है।
21

5
array_diff समाधान @orrd ने बहुत सफाई दी है
यूसुफ कोनॉली

223

पिछले जवाब सभी की जरूरत से ज्यादा काम कर रहे हैं। बस array_diff का उपयोग करें । यह इसे करने का सबसे सरल तरीका है:

$containsAllValues = !array_diff($search_this, $all);

बस आपको इतना ही करना है।


4
आहा पल के लिए धन्यवाद; मैं सोच में पड़ गया array_intersect
डेरेक इलचुक

19
इसका उत्तर होना चाहिए
मैथ्यू

2
हाँ, यह ऐसा बेहतर उपाय है
ओलेकेंड्रा डियूडियन

1
प्रतिच्छेदन से बेहतर उपाय!
theBosti

1
मैं इस पृष्ठ पर आया और उपरोक्त समाधान का उपयोग किया क्योंकि यह डुप्लिकेट के लिए जिम्मेदार था
रेज़ोर

9

Array_diff के साथ थोड़ा छोटा

$musthave = array('a','b');
$test1 = array('a','b','c');
$test2 = array('a','c');

$containsAllNeeded = 0 == count(array_diff($musthave, $test1));

// this is TRUE

$containsAllNeeded = 0 == count(array_diff($musthave, $test2));

// this is FALSE

3

मुझे लगता है कि आप इंटरसेक्ट फंक्शन की तलाश में हैं

array array_intersect ( array $array1 , array $array2 [, array $ ... ] )

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

http://www.php.net/manual/en/function.array-intersect.php


0

इस बारे में कैसा है:

function array_keys_exist($searchForKeys = array(), $searchableArray) {
    $searchableArrayKeys = array_keys($searchableArray);

    return count(array_intersect($searchForKeys, $searchableArrayKeys)) == count($searchForKeys); 
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.