PHP:
$arr = array(1=>'1233',2=>'12334',3 =>'Hello' ,4=>'Hello' ,5 =>'awesome' ,6 =>'awesome' ,7 =>'UK');
// Convert every value to uppercase, and remove duplicate values
$withoutDuplicates = array_unique(array_map("strtoupper", $arr));
$duplicates = array_diff($arr, $withoutDuplicates);
print_r($duplicates);
foreach ($duplicates as $key => $value) {
echo $value . ":" . $key. ' ';
}
输出:
Array
(
[3] => Hello
[4] => Hello
[5] => awesome
[6] => awesome
)
Hello:3 Hello:4 awesome:5 awesome:6
在线查询: http://writecodeonline.com/php/
我需要在单独的数组中获取重复值键。 例如:
array1 includes 3,4 for Hello.
array2 includes 5,6 for awesome.
上面的代码可以输出重复的值,也可以获取它们的密钥。现在我想将重复值键放在数组中。
答案 0 :(得分:1)
如果我已正确理解你的问题,你想获得每个数组的重复数组值的数组键吗?
这可以使用array_keys()
函数完成,并为其提供可选的搜索参数。
/*
* A side note: you do not have to specify the array index if their are numerical. PHP
* will do that for you.
*/
$array = array('1233', '12334', 'Hello', 'Hello', 'awesome', 'awesome', 'UK');
$keys = [];
$unique = array_unique($array);
foreach($unique as $search) {
$found = array_keys($array, $search);
/*
* If array_keys provided more than two results duplicate array values must exist.
*/
if(count($found) > 1) {
$keys[strtoupper($search)] = $found;
}
}
var_dump($keys);
这将产生关联数组,其中数组索引是搜索的值,数组值是所有键的数组。
array (size=2)
'HELLO' =>
array (size=2)
0 => int 3
1 => int 4
'AWESOME' =>
array (size=2)
0 => int 5
1 => int 6
希望这有帮助。
问候。
答案 1 :(得分:0)
如果我了解您,您可以使用array_keys
$keys = array_keys($duplicates);