You нужно будет сделать ваши функции чувствительны к регистру, чтобы получить "Hello" => "привет" результат вы ищете, попробуйте этот метод:
$arr = array(1=>'1233',2=>'12334',3 =>'Hello' ,4=>'hello', 5=>'U');
// Convert every value to uppercase, and remove duplicate values
$withoutDuplicates = array_unique(array_map("strtoupper", $arr));
// The difference in the original array, and the $withoutDuplicates array
// will be the duplicate values
$duplicates = array_diff($arr, $withoutDuplicates);
print_r($duplicates);
Выход:
Array
(
[3] => Hello
[4] => hello
)
Редактировать by @AlixAxel:
Этот ответ очень вводит в заблуждение. Он работает только в этом конкретном состоянии. Этот счетчик-пример:
$arr = array(1=>'1233',2=>'12334',3 =>'Hello' ,4=>'HELLO', 5=>'U');
Fails miserably. Кроме того, это не способ держать дубликаты:
array_diff($arr, array_unique($arr));
Поскольку одной из дублированных значений будет array_unique
, а затем отрубил array_diff
.
Редактируйте @RyanDay:
Так что смотрите на @ Srikanth-х или @ ответ Bucabay, который работа для всех случаев (искать случае нечувствительной в Bucabay-х), а не только тестовые данные, указанные в этом вопросе.
Существует аналогичный вопрос: http: // stackoverflow.com/questions/1212605/php-array-search-for-multiple-values / 1212863 –