जवाबों:
लक्ष्य को लक्ष्य के साथ जोड़ते हैं और सुनिश्चित करते हैं कि चौराहा लक्ष्यों के बराबर है:
$haystack = array(...);
$target = array('foo', 'bar');
if(count(array_intersect($haystack, $target)) == count($target)){
// all of $target is in $haystack
}
ध्यान दें कि आपको केवल परिणामी चौराहे के आकार को सत्यापित करने की आवश्यकता है जो कि लक्ष्य मानों के सरणी के आकार के समान है जो कि $haystackसुपरसेट है $target।
यह सत्यापित करने के लिए कि कम से कम एक मान इसमें $targetभी है $haystack, आप यह जाँच कर सकते हैं:
if(count(array_intersect($haystack, $target)) > 0){
// at least one of $target is in $haystack
}
एक डेवलपर के रूप में, आपको संभवतः सेट ऑपरेशंस (अंतर, मिलन, प्रतिच्छेदन) सीखना शुरू करना चाहिए। आप अपने सरणी को एक "सेट" के रूप में कल्पना कर सकते हैं, और कुंजी जिसे आप दूसरे के लिए खोज रहे हैं।
function in_array_all($needles, $haystack) {
return empty(array_diff($needles, $haystack));
}
echo in_array_all( [3,2,5], [5,8,3,1,2] ); // true, all 3, 2, 5 present
echo in_array_all( [3,2,5,9], [5,8,3,1,2] ); // false, since 9 is not present
function in_array_any($needles, $haystack) {
return !empty(array_intersect($needles, $haystack));
}
echo in_array_any( [3,9], [5,8,3,1,2] ); // true, since 3 is present
echo in_array_any( [4,9], [5,8,3,1,2] ); // false, neither 4 nor 9 is present
यह देखने के लिए @Rok Kralj उत्तर (सर्वोत्तम IMO) बंद जा रहा है कि क्या कोई सुइयों के अस्तित्व में है या नहीं, आप (bool)इसकी जगह उपयोग कर सकते हैं !!जिसके बजाय कभी-कभी कोड समीक्षा के दौरान भ्रमित किया जा सकता है।
function in_array_any($needles, $haystack) {
return (bool)array_intersect($needles, $haystack);
}
echo in_array_any( array(3,9), array(5,8,3,1,2) ); // true, since 3 is present
echo in_array_any( array(4,9), array(5,8,3,1,2) ); // false, neither 4 nor 9 is present
इस समस्या के लिए IMHO मार्क इलियट का समाधान सबसे अच्छा है। यदि आपको सरणी तत्वों और आप PHP 5.3 पर अधिक जटिल तुलनात्मक संचालन करने की आवश्यकता है, तो आप निम्नलिखित के बारे में भी कुछ सोच सकते हैं:
<?php
// First Array To Compare
$a1 = array('foo','bar','c');
// Target Array
$b1 = array('foo','bar');
// Evaluation Function - we pass guard and target array
$b=true;
$test = function($x) use (&$b, $b1) {
if (!in_array($x,$b1)) {
$b=false;
}
};
// Actual Test on array (can be repeated with others, but guard
// needs to be initialized again, due to by reference assignment above)
array_walk($a1, $test);
var_dump($b);
यह एक बंद होने पर निर्भर करता है; तुलना समारोह अधिक शक्तिशाली बन सकता है। सौभाग्य!
if(empty(array_intersect([21,22,23,24], $check_with_this)) {
print "Not found even a single element";
} else {
print "Found an element";
}
array_intersect () array1 के सभी मूल्यों से युक्त एक सरणी देता है जो सभी तर्कों में मौजूद हैं। ध्यान दें कि कुंजियाँ संरक्षित हैं।
सरणी 1 में उन सभी मानों को समाहित करता है जिनके मान सभी मापदंडों में मौजूद हैं।
खाली () - निर्धारित करें कि क्या एक चर खाली है
यदि संस्करण मौजूद है तो FALSE लौटाता है और इसमें एक गैर-खाली, गैर-शून्य मान होता है। अन्यथा TRUE लौटाता है।