#php #arrays
#php #массивы
Вопрос:
Итак, я получаю информацию из файла JSON и получаю один массив под названием «items» и передаю его в этот массив в PHP:
"items": [
{
"id": "2",
"parent": null,
"itemType": 0,
"title": "Manuel Perez",
"description": "Chief Executive Officer (CEO)",
"phone": "(491) 183-55-45",
"email": "ste.ballmer@name.com",
"photo": "",
"image": "demo/images/photos/m.png",
"href": "showdetails.php?recordid=2",
"isVisible": true
}
Затем я должен сравнить это с другим, который может содержать больше или меньше элементов, но я могу взять те элементы, которые изменяют размер массива. Но когда я хочу получить разницу, когда размер одинаков, а значение ключа отличается, когда я не могу заставить это работать.
Если во втором массиве в позиции 2 значение «ItemType» изменится на 1, я хочу получить что-то вроде этого:
Array[2] - > "itemType": 1
И таким образом я могу узнать, изменилось ли что-то.
Ответ №1:
Предположим, у вас есть два массива $items1 и $ items2:
$items1 = [
"id" => "2",
"itemType" => 0,
];
$items2 = [
"parent" => null,
"itemType" => 1,
];
Чтобы получить данные, которые добавлены или изменены в $items2 по сравнению с $ item1, вы можете использовать:
array_diff_assoc($items2, $items1) // displays ['parent' => null, 'itemType' => 1]
Чтобы получить данные, которые добавлены или изменены в $items1 по сравнению с $ item2, вы можете использовать:
array_diff_assoc($items1, $items2) // displays ['id' => "2", 'itemType' => 0]
Если вы хотите оба, вы можете объединить эти два массива и использовать их по своему усмотрению.
Ответ №2:
-
Прежде всего, скройте ваши данные JSON в массив и преобразуйте элементы из обоих в $ jsonArray1 и $ jsonArray2 соответственно.
-
Теперь отсортируйте оба ваших массива по ключу следующим образом ksort($jsonArray1); ksort($ jsonArray2);
-
Теперь возьмем разницу обоих массивов $diffData = array_diff_assoc($jsonArray1, $ jsonArray2);
Вывод: $ diffData — это ваш вывод, надеюсь, это поможет!!