2010-09-30 18 views
8

क्या यह जांचने का एक आसान तरीका है कि सरणी में सभी मान एक-दूसरे के बराबर हैं या नहीं?एक बार में सभी सरणी मानों की जांच

इस मामले में, यह गलत वापसी होगी:

$array[0] = 'yes'; 
$array[1] = 'yes'; 
$array[2] = 'no'; 

और इस मामले में, सच:

$array[0] = 'yes'; 
$array[1] = 'yes'; 
$array[2] = 'yes'; 

तो, हाँ, वहाँ एक समारोह/बिल्कुल सरणी मूल्यों की जाँच करने के लिए विधि है एक बार?

अग्रिम धन्यवाद!

+0

मुझे नहीं लगता था कि यह एक बहुत ही दिलचस्प सवाल था लेकिन वहाँ जवाब में से एक शांत किस्म है: कि सभी रिक्त स्ट्रिंग था। अच्छा लगा। – Hans

+0

@ हंस सहमत हैं, हर जवाब को यह अपने अद्वितीय मोड़, बहुत ही रोचक परिणाम मिल गया है! – jolt

उत्तर

29
नहीं

एक भी समारोह, लेकिन एक ही आसानी से प्राप्त किया जा सकता (?):

count(array_keys($array, 'yes')) == count($array) 
+0

प्रदान किए गए सभी समाधानों से यह समझने में सबसे आसान था, अधिक कार्यक्षमता प्रदान करता है और वास्तव में सरल है! +1, स्वीकार किया। उस 'हां' चेक के लिए विशाल बोनस। – jolt

+0

array_keys array_count_values ​​से वास्तव में बेहतर है, क्योंकि आप सरणी/ऑब्जेक्ट तत्वों की जांच भी कर सकते हैं और वांछित – user187291

+0

पर सख्त तुलना लागू कर सकते हैं जब आपका मान 0 की तरह कुछ है --- array_keys ($ array, 0 , सच) – abimelex

2
if($a === array_fill(0, count($a), end($a))) echo "all items equal!"; 

या बेहतर

if(count(array_count_values($a)) == 1)... 
8

एक और संभावित विकल्प

if(count(array_unique($array)) == 1) 
+0

सबसे सुरुचिपूर्ण और बुद्धिमान। बेशक, 'count_unique()] (http://php.net/manual/en/function.array-unique.php) के साथ' गिनती() '' 1' होना चाहिए क्योंकि यह "डुप्लिकेट मानों के बिना एक नया सरणी देता है । " –

1

"सभी मान समान हैं" सभी मानों के बराबर है पहला तत्व "के बराबर है, इसलिए मैं कुछ इस तरह करते हैं:

function array_same($array) { 
    if (count($array)==0) return true; 

    $firstvalue=$array[0]; 
    for($i=1; $i<count($array); $i++) { 
     if ($array[$i]!=$firstvalue) return false; 
    } 
    return true; 
} 
0

यहाँ इसके बारे में जाने के लिए, सूची

मेरे मामले में साथ array_diff का उपयोग कर एक और तरीका है, मैं सरणियों के खिलाफ परीक्षण करने के लिए किया था

$empty_array = array('','',''); // i know ahead of time that array has three elements 
$array_2d = array(); 
for($array_2d as $arr) 
    if(array_diff($arr,$empty_arr)) // 
     do_stuff_with_non_empty_array() 
0
if(count(array_unique($array)) === count($array)) { 
    // all items in $array are the same 
}else{ 
    // at least one item is different 
} 
संबंधित मुद्दे