В качестве разминки сегодня решим следующую задачу - предположим, есть массив, некоторые значения в нем повторяются. Требуется получить массив неуникальных (повторяющихся) значений или массив не повторяющихся (уникальных) значений.
Сразу к примеру:
В общем-то всё, на досуге можете расширить этот код и задать количество появлений в виде переменной, а не фиксированного значения
Сразу к примеру:
$array = [1, 2, 3, 4, 3, 4, 5, 6, 6];
// Для любого из вариантов задачи нам потребуется знать
// сколько раз в массиве встречается каждое значение
$freqs = array_count_values($array);
// Массив уникальных значений - [1, 2, 5]
$unique = array_keys(
array_filter(
$freqs,
function ($freq) { return 1 === $freq; }
)
);
// Массив неуникальных значений - [3, 4, 6]
$nonunique = array_keys(
array_filter(
$freqs,
function ($freq) { return 1 < $freq; }
)
);
// Фильтрация исходного массива с оставлением только повторяющихся значений -[3, 4, 3, 4, 6, 6]
$allNonunique = array_filter(
$array,
function ($v) use ($freqs) { return 1 < $freqs[$v]; }
);
В общем-то всё, на досуге можете расширить этот код и задать количество появлений в виде переменной, а не фиксированного значения
1
.
Комментариев нет:
Отправить комментарий