В 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.
Не забудьте поэкспериментировать с этими методами и выбрать тот, который соответствует вашей структуре кода и требованиям к производительности. Приятного кодирования!