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

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

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

function getUniqueArray($multiArray, $value) {
  $uniqueArray = [];
  foreach ($multiArray as $subArray) {
    if (!in_array($value, $subArray)) {
      $uniqueArray[] = $subArray;
    }
  }
  return $uniqueArray;
}
$multiArray = [
  ['apple', 'banana', 'cherry'],
  ['orange', 'banana', 'apple'],
  ['grape', 'mango', 'cherry'],
];
$uniqueArray = getUniqueArray($multiArray, 'apple');
print_r($uniqueArray);

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

function filterDuplicates($carry, $item) {
  if (!in_array($item, $carry)) {
    $carry[] = $item;
  }
  return $carry;
}
function getUniqueArray($multiArray, $value) {
  $uniqueArray = array_reduce($multiArray, 'filterDuplicates', []);
  return array_filter($uniqueArray, function ($subArray) use ($value) {
    return !in_array($value, $subArray);
  });
}
$multiArray = [
  ['apple', 'banana', 'cherry'],
  ['orange', 'banana', 'apple'],
  ['grape', 'mango', 'cherry'],
];
$uniqueArray = getUniqueArray($multiArray, 'apple');
print_r($uniqueArray);

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

function getUniqueArray($multiArray, $value) {
  $uniqueArray = array_map('array_unique', $multiArray);
  return array_filter($uniqueArray, function ($subArray) use ($value) {
    return !in_array($value, $subArray);
  });
}
$multiArray = [
  ['apple', 'banana', 'cherry'],
  ['orange', 'banana', 'apple'],
  ['grape', 'mango', 'cherry'],
];
$uniqueArray = getUniqueArray($multiArray, 'apple');
print_r($uniqueArray);

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