2010-03-19 7 views
4

Je dois modifier du code dans une application sur laquelle je travaille en utilisant la méthode array_diff ($ array1, $ array2). Le problème que je suis est qu'il est sensible à la casse et que j'ai besoin de lui renvoyer la valeur correcte si les valeurs du tableau correspondent même si le cas est différent. Je ne veux pas changer le cas en minuscules car j'ai besoin de la valeur retournée pour garder son cas. Je suis un peu confus comme la meilleure méthode pour le faire.PHP ignore la sensibilité à la casse lors de la comparaison des valeurs de tableau

Répondre

10

Vous avez besoin: array_udiff et strcasecmp

$result = array_udiff($arr1, $arr2, 'strcasecmp'); 

Par ex

<?php 
$arr1 = array("string","string","string"); 
$arr2 = array("String","string","sTRING"); 

$result = array_udiff($arr1, $arr2, 'strcasecmp'); 
print_r($result); 
?> 

$result devrait faire écho array ()

+0

merci JD I va l'essayer. –

+0

Travaillé parfaitement, je l'apprécie vraiment. –

0

Utilisez

strcasecmp - comparaison de chaînes insensible à la casse binaire

<?php 
$var1 = "Hello"; 
$var2 = "hello"; 
if (strcasecmp($var1, $var2) == 0) { 
    echo '$var1 is equal to $var2 in a case-insensitive string comparison'; 
} 
?> 

Refer this link for more information

+0

Ce compare les tableaux, pas des chaînes. –

+0

voir mon exemple ci-dessus pour comparaison de tableaux, en utilisant @ strcasecmp' et 'array_udiff' de pavun_cool – Darbio

+0

pas sûr que cela fonctionne pour ma situation, je compare deux tableaux quelles que soient les valeurs ne sont pas à la fois retourné et puis ils sont utilisés –

0

Sérialisation peut aider, vous pouvez utiliser strcasecmp sur les chaînes résultantes:

<?php 

$arr1 = array("string","string"); 
$arr2 = array("String","sTRING"); 

$equal = (strcasecmp(serialize($arr1), serialize($arr2)) === 0); 

?> 
Questions connexes