Я работаю с одномерным массивом в PHP. Я хотел бы обнаружить наличие повторяющихся значений, затем подсчитать количество повторяющихся значений и вывести результаты. Например, учитывая следующий массив:
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');
Я хочу напечатать:
apple (2)
orange
pear (2)
banana
kiwi (3)
Есть какие-нибудь советы, как подойти к этой проблеме?
Спасибо.
Майк
источник
array_unique($array, SORT_REGULAR)
заставляет PHP проверять элементы в обычном режиме без изменения типа, но это слабое сравнение. Таким образом, разные экземпляры одного класса с одинаковым содержанием будут унифицированы.источник
return array_values(array_unique(array_diff_key($a, array_unique($a))));
Вы можете попробовать превратить этот массив в ассоциативный массив с фруктами в качестве ключей и количеством вхождений в качестве значений. Немного многословно, но похоже:
источник
array_count_values
Чтобы избавиться от использования
array_unique()
. Чтобы определить, есть ли у них какое-либо применение,count(array_unique())
и сравнить сcount($array)
.источник
Поместите их в
map
(псевдокод)источник
Возможно, что-то вроде этого (непроверенный код, но должен дать вам представление)?
Затем вы получите новый массив со значениями в качестве ключей, а их значением будет количество раз, которое они существовали в исходном массиве.
источник
array_count_values
источник
Я не нашел ответа, который искал, поэтому написал эту функцию. Это создаст массив, который будет содержать только дубликаты между двумя массивами, но не будет печатать количество дублирований элемента, поэтому он не отвечает напрямую на вопрос, но я надеюсь, что это поможет кому-то в моей ситуации.
Выходы:
источник
Простой способ:
источник