我想从数组中检索所有重复的条目。这在PHP中可行吗?
array( 1 => '1233', 2 => '12334', 3 => 'Hello', 4 => 'hello', 5 => 'U' );
我想返回一个仅包含重复值的数组:“ hello”。
所需的输出数组:
array( 1 => 'Hello', 2 => 'hello' );
您需要使函数不区分大小写,以获取所需的“ Hello” =>“ 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 )
通过@AlixAxel编辑:
这个答案很有误导性。它仅在此特定条件下有效。这个反例:
$arr = array(1=>'1233',2=>'12334',3 =>'Hello' ,4=>'HELLO', 5=>'U');
惨败 。另外,这不是保留重复项的方法:
array_diff($arr, array_unique($arr));
由于重复的值之一将在中array_unique,然后被斩波array_diff。
array_unique
array_diff
通过@RyanDay编辑:
因此,请查看@Srikanth或@Bucabay的答案,这些答案适用于所有情况(查找Bucabay的大小写不敏感),而不仅仅是问题中指定的测试数据。