@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" который нужно записать в переменную
Как такой можно реализовать?
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 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 там где нужно
Возможно гдето тупанул со скобками)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы