@GRO24

Как сравнение массивов и записать разницу?

Всем привет.
Скажите пожалуйста, как я могу сравнить 2 массива и если есть отличия вложений их записать?

Имеем массив первый
{
    "wips": [{
        "game": {
            "identifier": "identifier_one",
            "title": "title,
            "url": "url",
            "image_path": "image_path"
        },
        "round": {
            "country": "country",
            "in": 5000,
            "out": 200000,
            "jet": 5000,
            "won": 200000
        },
        "power": {
            "nickname": "nickname",
            "avatar": "avatar"
        }
    },
    {
        "game": {
            "identifier": "identifier_two",
            "title": "title,
            "url": "url",
            "image_path": "image_path"
        },
        "round": {
            "country": "country",
            "in": 5000,
            "out": 200000,
            "jet": 5000,
            "won": 200000
        },
        "power": {
            "nickname": "nickname",
            "avatar": "avatar"
        }
    }]
}


{
    "wips": [{
        "game": {
            "identifier": "identifier_one",
            "title": "title,
            "url": "url",
            "image_path": "image_path"
        },
        "round": {
            "country": "country",
            "in": 5000,
            "out": 200000,
            "jet": 5000,
            "won": 200000
        },
        "power": {
            "nickname": "nickname",
            "avatar": "avatar"
        }
    },
    {
        "game": {
            "identifier": "identifier_three",
            "title": "title,
            "url": "url",
            "image_path": "image_path"
        },
        "round": {
            "country": "country",
            "in": 5000,
            "out": 200000,
            "jet": 5000,
            "won": 200000
        },
        "power": {
            "nickname": "nickname",
            "avatar": "avatar"
        }
    }]
}


Как мы видим у нас появился новый результат "game": {"identifier": "identifier_three" который нужно записать в переменную
Как такой можно реализовать?
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 2
@krundetz
1. преобразуете json в массивы, функция json_decode
2. сравниваете массивы функция array_diff

только учтите что array_diff работает с одномерными массивами, поэтому данные надо будет преобразить чтобы их было удобно сравнить
Ответ написан
vechnokrainii
@vechnokrainii
ну почти всегда(
загони первый массив другой чтобы было удобно обращаться и убрать вложенный foreach
// arr1 -это первый массив 
$mass = array_column($arr1, 'out', 'identifier')

И затем перебираешь второй и ищещь совпадения
foreah ($arr2 as $key => $val) {
     if(isset($mass[$val['game']['indetifier']])) {
                  // тут делаешь проверку на out
          if($val['pound']['out'] == $mass[$val['game']['indetifier']]) {
         continue;
          } else {
          $result[] = $val;
          }
     } else {
          $result[] = $val;
}

Не доконца понял должны ли быть айди и оут уникальными оба или только один из них. Но просто тогда добавишь if там где нужно
Возможно гдето тупанул со скобками)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 дек. 2020, в 23:18
80000 руб./за проект
01 дек. 2020, в 22:41
60000 руб./за проект
01 дек. 2020, в 21:24
500 руб./за проект