I have to modify some code in a application I am working on that is using the array_diff($array1,$array2) method. The problem I am having is it is case sensitive and I need to have it return the correct value if the array values match even if the case is different. I don't want to change the case to lowercase because I need the value returned to keep its case. I'm a little confused as the best method to do this.
3 Answers
You need: array_udiff and strcasecmp
$result = array_udiff($arr1, $arr2, 'strcasecmp');
E.g.
<?php
$arr1 = array("string","string","string");
$arr2 = array("String","string","sTRING");
$result = array_udiff($arr1, $arr2, 'strcasecmp');
print_r($result);
?>
$result should echo array ( )
Comments
Use
strcasecmp — Binary safe case-insensitive string comparison
<?php
$var1 = "Hello";
$var2 = "hello";
if (strcasecmp($var1, $var2) == 0) {
echo '$var1 is equal to $var2 in a case-insensitive string comparison';
}
?>
3 Comments
St. John Johnson
This is comparing arrays, not strings.
Darbio
see my example above for array comparing, using @pavun_cool's
strcasecmp and array_udiffdan.codes
not sure that works for my situation, I am comparing two arrays whatever values are not in both get returned and then those are used