2009-12-09 9 views
9

mam następujące dwie tablice i kod, aby znaleźć array_diff:PHP: Case-niewrażliwy "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); 

Powyższy kod daje macierz wyjściową jak:

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

Ale chcę ją jako:

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

Uwaga "Twój" nie jest usunięty, może to być spowodowane "Y" jest w czapkach w drugiej tablicy. Chcę również wykluczyć "Twoje", więc jest tam jakaś niewrażliwa na wielkość wersji array_diff w PHP.

Próbowałem array_udiff ale ja nie otrzymuję dokładnie, jak to wykorzystać w moim problemem

Dzięki

Odpowiedz

43

Spróbuj przejść strcasecmp jako trzeci parametr do array_udiff funkcję:

<?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); 

Output :

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

Uważam, że brakuje ci przecinka. ;) – MitMaro

+0

@MitMaro: Dzięki! –

+0

Próbowałem go jak 'array_udiff ($ all_ws, $ obs_ws„strcasecmp”);' ale jej nie działa :( – Prashant

3

Byłeś na dobrej drodze. Oto moja sugestia:

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

Dlaczego po prostu nie przekazać nazwy funkcji ''strcasecmp'' jako trzeciego parametru? –

+1

Masz rację, powinienem. – Jage