Есть ли более простой способ получить все ключи массива, имеющие такое же значение, когда значение неизвестно.Найти все ключи массивов, которые имеют одинаковое значение
Задача с array_unique
заключается в том, что она возвращает уникальный массив и, следовательно, не находит уникальных значений.
То есть, к примеру, из этого массива:
Array (
[a]=>1000
[b]=>1
[c]=>1000
)
Я хочу, чтобы получить эту
Array (
[a]=>1000
[c]=>1000
)
Другой способ обойти это, если бы я мог найти одинокие значения, и затем их ключи, а затем использовать array_diff
Это то, что у меня есть до сих пор, выглядит ужасно:
$a = array('a' => 1000, 'b' => 1, 'c' => 1000);
$b = array_flip(array_count_values($a));
krsort($b);
$final = array_keys($a, array_shift($b));
Update
Используя ответ Пауло Freites' в качестве базового кода, я мог бы получить его работу довольно легко, ремонтопригодны и легко на глаз вид пути ... с помощью фильтрации как метод статического класса я могу получить дублирующие значения из массива, просто вызывая ClassName::get_duplicates($array_to_filter)
private static $counts = null;
private static function filter_duplicates ($value) {
return self::$counts[ $value ] > 1;
}
public static function get_duplicates ($array) {
self::$counts = array_count_values($array);
return array_filter($array, 'ClassName::filter_duplicates');
}
что вы имеете в виду вытяжкой? Удалить дубликаты? сохранить только дубликаты? –
Угадайте, что он означает создать новый массив с одинаковыми элементами, сохраняя свои исходные ключи, как в примере. – Wh1T3h4Ck5
Мне не нужен начальный массив, так что либо я хочу иметь уникальные ключи, либо ключи с дубликатами .. и по уникальному я имею в виду, что значение этого ключа больше не существует в массиве – micadelli