0 / 0 / 0
Регистрация: 26.10.2011
Сообщений: 24
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
Отформатировать плоские и вложенные массивы18.01.2021, 17:57. Просмотров 217. Ответов 1
Метки нет Все метки)
(
Добрый день!
Есть пара вопросов, бьюсь над ними уже долгое время. 1) В общем есть код для сравнения двух файлов, json и yml, json и json, yml и yml. Результат это различия в файлах, типа Было и Стало. К тем данным которые добавились, перед ключом добавляем +, минус добавляем к тем которые были удалены, те что были неизменны оставляем без знаков, просто с отступом. К примеру:
Код
Array ( [0] => Array ( [key] => host [value] => site.com [status] => not changed ) [1] => Array ( [key] => timeout [oldValue] => 50 [newValue] => 20 [status] => changed ) [2] => Array ( [key] => proxy [value] => 123.234.53.22 [status] => removed ) [3] => Array ( [key] => follow [value] => [status] => removed ) [4] => Array ( [key] => verbose [value] => 1 [status] => added ) ) Константа STARTTOSORTFROMSYMBOL = 4 , отвечает за то, что бы сортировать данные по первой букве по ключу, на 5 индексе начинается ключ, что бы просчитать отступы.
И финальный готовый вариант, то что мне и нужно было в нужном порядке: Код
{ - follow: false host: hexlet.io - proxy: 123.234.53.22 - timeout: 50 + timeout: 20 + verbose: true } К примеру сравниваем первый файл json:
Код
common: follow: false setting1: Value 1 setting3: null setting4: blah blah setting5: key5: value5 setting6: key: value ops: vops doge: wow: so much group1: foo: bar baz: bars nest: str group3: fee: 100500 deep: id: number: 45 Мои уже собранные данные: Код
Array ( [0] => Array ( [key] => common [type] => nested [children] => Array ( [0] => Array ( [key] => follow [value] => [status] => added ) [1] => Array ( [key] => setting1 [value] => Value 1 [status] => not changed ) [2] => Array ( [key] => setting2 [value] => 200 [status] => removed ) [3] => Array ( [key] => setting3 [oldValue] => 1 [newValue] => [status] => changed ) [4] => Array ( [key] => setting6 [type] => nested [children] => Array ( [0] => Array ( [key] => doge [type] => nested [children] => Array ( [0] => Array ( [key] => wow [oldValue] => [newValue] => so much [status] => changed ) ) ) [1] => Array ( [key] => key [value] => value [status] => not changed ) [2] => Array ( [key] => ops [value] => vops [status] => added ) ) ) [5] => Array ( [key] => setting4 [value] => blah blah [status] => added ) [6] => Array ( [key] => setting5 [value] => Array ( [key5] => value5 ) [status] => added ) ) ) [1] => Array ( [key] => group1 [type] => nested [children] => Array ( [0] => Array ( [key] => baz [oldValue] => bas [newValue] => bars [status] => changed ) [1] => Array ( [key] => foo [value] => bar [status] => not changed ) [2] => Array ( [key] => nest [oldValue] => Array ( [key] => value ) [newValue] => str [status] => changed ) ) ) [2] => Array ( [key] => group2 [value] => Array ( [abc] => 12345 [deep] => Array ( [id] => 45 ) ) [status] => removed ) [3] => Array ( [key] => group3 [value] => Array ( [fee] => 100500 [deep] => Array ( [id] => Array ( [number] => 45 ) ) ) [status] => added ) ) Код
{ common: { + follow: false setting1: Value 1 - setting2: 200 - setting3: true + setting3: null + setting4: blah blah + setting5: { key5: value5 } setting6: { doge: { - wow: + wow: so much } key: value + ops: vops } } group1: { - baz: bas + baz: bars foo: bar - nest: { key: value } + nest: str } - group2: { abc: 12345 deep: { id: 45 } } + group3: { fee: 100500 deep: { id: { number: 45 } } } } Код для сбора данных:
0
|
|
18.01.2021, 17:57 | |
Отформатировать файл с программой на языку С. ( вложенные циклы, if_else) Отформатировать файл с программой на языке С. ( вложенные циклы, if_else) Вложенные массивы js Вложенные массивы |
|
867 / 598 / 275
Регистрация: 31.08.2019
Сообщений: 1,722
|
||||||
19.01.2021, 03:28 | 2 | |||||
Без сортировки попробовал, как вариант, обойти один массив, ... слегка изменив и создав дополнительный,
и при выводе обходить второй.
Код
"common":{ "setting1";"Value 1", - "setting2";200, - "setting3";true, + "setting3";null, "setting6":{ "key";"value", "doge":{ - "wow";"", + "wow";"so much", } + "ops";"vops", } + "follow";false, + "setting4";"blah blah", + "setting5";{"key5":"value5"}, } "group1":{ - "baz";"bas", + "baz";"bars", "foo";"bar", - "nest";{"key":"value"}, + "nest";"str", } - "group2";{"abc":12345,"deep":{"id":45}}, + "group3";{"fee":100500,"deep":{"id":{"number":45}}},
1
|
19.01.2021, 03:28 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Вложенные массивы Вложенные массивы Вложенные массивы
массивы и вложенные структуры
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |