7 практических способов получить уникальные значения по ключу из массива в PHP

В PHP работа с массивами — обычная задача, и иногда вам может потребоваться извлечь уникальные значения на основе определенного ключа. В этом сообщении блога вы познакомитесь с различными методами достижения этой цели, используя разговорный язык, и предоставите примеры кода для каждого подхода. К концу этой статьи вы получите четкое представление о различных методах извлечения уникальных значений по ключу из массива в PHP.

Метод 1: использование цикла и ассоциативного массива
Один из самых простых способов получить уникальные значения по ключу — использовать цикл и ассоциативный массив. Вот пример:

$originalArray = [
  ['id' => 1, 'name' => 'John'],
  ['id' => 2, 'name' => 'Jane'],
  ['id' => 3, 'name' => 'John'],
  ['id' => 4, 'name' => 'Alice'],
];
$uniqueValues = [];
foreach ($originalArray as $item) {
  $uniqueValues[$item['id']] = $item;
}
$uniqueValues = array_values($uniqueValues);

Метод 2: использование функции array_reduce()
Функция array_reduce()обеспечивает элегантный способ извлечения уникальных значений по ключу. Вот пример:

$uniqueValues = array_reduce($originalArray, function ($carry, $item) {
  $carry[$item['id']] = $item;
  return $carry;
}, []);
$uniqueValues = array_values($uniqueValues);

Метод 3. Использование функций array_column() и array_unique().
Комбинация функций array_column()и array_unique()может помочь вам достичь желаемого результата. Вот пример:

$uniqueValues = array_unique(array_column($originalArray, null, 'id'));
$uniqueValues = array_values($uniqueValues);

Метод 4: использование функции array_flip()
Другой метод предполагает использование функции array_flip()для замены значений с помощью ключей, что автоматически удаляет дубликаты. Вот пример:

$uniqueValues = array_values(array_flip(array_column($originalArray, 'id')));

Метод 5: использование функции array_filter()
Функция array_filter()позволяет определить собственную логику фильтрации для извлечения уникальных значений по ключу. Вот пример:

$uniqueValues = array_filter($originalArray, function ($item) {
  static $ids = [];
  if (in_array($item['id'], $ids)) {
    return false;
  }
  $ids[] = $item['id'];
  return true;
});

Метод 6: использование функции array_walk()
Функция array_walk()может использоваться для перебора массива и удаления повторяющихся значений на основе нужного ключа. Вот пример:

$uniqueValues = [];
array_walk($originalArray, function ($item) use (&$uniqueValues) {
  if (!isset($uniqueValues[$item['id']])) {
    $uniqueValues[$item['id']] = $item;
  }
});
$uniqueValues = array_values($uniqueValues);

Метод 7: использование функций array_column() и array_count_values()
Этот метод объединяет функции array_column()и array_count_values()для подсчета вхождений каждого ключа и фильтра. вышли дубликаты. Вот пример:

$counts = array_count_values(array_column($originalArray, 'id'));
$uniqueValues = array_filter($originalArray, function ($item) use ($counts) {
  return $counts[$item['id']] === 1;
});

В этой статье мы рассмотрели семь практических методов получения уникальных значений по ключу из массива в PHP. Каждый метод предлагает уникальный подход, позволяющий вам выбрать тот, который лучше всего соответствует вашим конкретным потребностям. Используя эти методы, вы можете эффективно извлекать уникальные значения и оптимизировать рабочий процесс кодирования PHP.

Не забудьте поэкспериментировать с этими методами и выбрать тот, который соответствует вашей структуре кода и требованиям к производительности. Приятного кодирования!