2009-12-09 2 views
9

я после двух массивов и код, чтобы найти array_diff:PHP: без учета регистра «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"); 

Примечание. «Ваш» не удаляется, возможно, из-за «Y» находится в шапках во втором массиве. Я хочу также исключить «Ваш», так же как и в PHP-версии без учета регистра array_diff.

Я попытался array_udiff, но я не получаю, как именно использовать это в моей проблеме

Благодарности

ответ

43

Попробуйте пройти strcasecmp в качестве третьего параметра array_udiff функции:

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

@MitMaro: Спасибо! –

+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