2009-12-09 9 views
9

मैं दो सरणियों और कोड निम्नलिखित है array_diff लगता है:पीएचपी: केस-असंवेदी "array_diff"

$obs_ws = array("you", "your", "may", "me", "my", "etc"); 
$all_ws = array("LOVE", "World", "Your", "my", "etc", "CoDe"); 

$final_ws = array_diff($all_ws, $obs_ws); 

उत्पादन सरणी देने कोड से ऊपर के रूप में:

$final_ws = array("LOVE", "World", "Your", "CoDe"); 

लेकिन मैं इसे के रूप में चाहते हैं:

$final_ws = array("LOVE", "World", "CoDe"); 

नोट "आपका" हटाया नहीं गया है, यह "वाई" के कारण हो सकता है दूसरी सरणी में कैप्स में। मैं "आपका" भी बाहर करना चाहता हूं, तो क्या PHP में array_diff का कोई केस-असंवेदनशील संस्करण है।

मैं array_udiff कोशिश की, लेकिन मैं वास्तव में नहीं मिल रहा है कैसे मेरी समस्या में

धन्यवाद

उत्तर

43

कोशिश इस का उपयोग करने के array_udiff कार्य करने के लिए तीसरे पैरामीटर के रूप में strcasecmp पारित करने के लिए:

<?php 
$obs_ws = array("you", "your", "may", "me", "my", "etc"); 
$all_ws = array("LOVE", "World", "Your", "my", "etc", "CoDe"); 

$final_ws = array_udiff($all_ws, $obs_ws, 'strcasecmp'); 

print_r($final_ws); 

आउटपुट :

Array 
(
    [0] => LOVE 
    [1] => World 
    [5] => CoDe 
) 
+2

मुझे विश्वास है कि आप एक अल्पविराम खो रहे हैं। ;) – MitMaro

+0

@ मितमारो: धन्यवाद! –

+0

मैंने इसे 'array_udiff ($ all_ws, $ obs_ws,' strcasecmp ') की तरह कोशिश की; 'लेकिन यह काम नहीं कर रहा है :( – Prashant

3

आप सही रास्ते पर थे। यह मेरा सुझाव है:

function array_casecmp($arr1,$arr2){ 
    return array_udiff($arr1,$arr2,'strcasecmp'); 
} 


$obs_ws = array("you", "your", "may", "me", "my", "etc"); 
$all_ws = array("LOVE", "World", "Your", "my", "etc", "CoDe"); 
var_dump(array_casecmp($all_ws,$obs_ws)); 
+1

क्यों न केवल फ़ंक्शन नाम 'strcasecmp'' को तीसरे पैरामीटर के रूप में पास करें? –

+1

आप सही हैं, मुझे चाहिए। – Jage