Array_diff в foreach? - PullRequest
       9

Array_diff в foreach?

0 голосов
/ 26 июня 2019

Мне нужно сравнить значения из некоторых массивов. Этот массив является многомерным, и мне нужно сравнить массивы внутри.

Вот свалка:

PHP

    array (size=4)
  1 => 
    array (size=3)
      0 => string '96' (length=2)
      1 => string '90' (length=2)
      2 => string '91' (length=2)
  2 => 
    array (size=3)
      0 => string '96' (length=2)
      1 => string '90' (length=2)
      2 => string '91' (length=2)
  3 => 
    array (size=4)
      0 => string '96' (length=2)
      1 => string '90' (length=2)
      2 => string '91' (length=2)
      3 => string '98' (length=2)
  4 => 
    array (size=4)
      0 => string '96' (length=2)
      1 => string '90' (length=2)
      2 => string '91' (length=2)
      3 => string '98' (length=2)

Я хотел использовать что-то вроде array_diff, чтобы сравнить различные массивы, но ... даже если это кажется глупым, я не знаю, как это сделать. Полагаю, я рассчитываю «извлечь» массив из 4, чтобы можно было их сравнить.

Есть ли кто-нибудь, кто может объяснить мне хороший способ сделать это? Большое спасибо.

1 Ответ

0 голосов
/ 26 июня 2019
<?php

$arr = [
    ['96','90','91'],
    ['96','90','91'],
    ['96','90','91','98'],
    ['96','90','91','98'],
];

$set = [];

foreach ($arr as $values) {
    foreach($values as $each_value){
        if(!isset($set[$each_value])) $set[$each_value] = true;
    }
}

$result = [];

$set = array_keys($set);

foreach ($arr as $values) {
    foreach($set as $value){
        if(!in_array($value,$values)) $result[] = $value;
    }
}

$result = array_unique($result);

print_r($result);

Демонстрация: https://3v4l.org/gMZUR

  • Сначала мы создадим набор элементов, присутствующих в каждом массиве.
  • Позже мы снова перемещаемся по всем массивам и проверяем каждый элемент в наборе на соответствие значениям каждого массива.
  • Если мы находим элемент в наборе, которого нет ни в одном из каждого отдельного подмассива, мы добавляем его в result.
  • Обратите внимание, что мы можем подсчитать частоту элемента и сравнить ее с размером фактического набора данных, но дублированные значения могут вызвать проблемы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...