Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Поменять ключь массиву
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
я бы тупо мапил
никакого смысла в динамическом решении
минус читаемость и минус производительность
Noobster
Отправлено: 20 Августа, 2019 - 14:35:48
Новичок
Покинул форум
Сообщений всего: 29
Дата рег-ции: Авг. 2018
Помог: 0 раз(а)
Vladimir Kheifets, большое спасибо уважаемый ещё раз! (не могу +1 поставить)
LIME, можешь и свой вариант показать?
Если чество записей может быть до 30к, как будет тут работать производительность сложно заранее подумать, ну а читаемость если самого кода, вроде ясно, а если результата, тут без разницы.
Просто если честно в одном случае может быть author_data, а вдругом может быть product_data, и оба с разными ключами, соотвественно динамичность хотелось бы.
И ещё мообще 3ур. массив может быть, т.е. по идее мне надо получить разбивку виде.
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Noobster пишет:
Просто если честно в одном случае может быть author_data, а вдругом может быть product_data
тоесть тебе заранее не известна вложенность и ключи? это совсем другая задача
не напишу так как мне вставать нельзя, а лежа ну его
решается просто рекурсией с накоплением ключа Vladimir Kheifets заранее готовить заголовки не обязательно в этом случае (Добавление)
и не понятно как тогда заголовки формировать вообщето
Header_author_data_id или Header_author_product_id
нипанятна что писать на этом месте
сам определись сначала что тебе надо
а еще лучше зачем тебе это надо
Noobster
Отправлено: 20 Августа, 2019 - 14:53:27
Новичок
Покинул форум
Сообщений всего: 29
Дата рег-ции: Авг. 2018
Помог: 0 раз(а)
Это всё мне требуется для Экспорта данных, с разных источников, для разного формата.
И да верно, заранее я не знаю какие ключи и вложения будут, просто надо сделать макс. динамично, т.е. эту функцию я буду использовать для всех задач, и передавать её разное содержание массива.
Единственно только добавлю, что надо добавить некий статический массив, в который буду перечислять какие ключи надо исключать, чтобы в результате не выводились.
Спаисбо, и быстрого выздоровления желаю.
LIME
Отправлено: 20 Августа, 2019 - 14:56:58
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Возможно разделять лучше в 2 пробела
Header__author_data__id
Или точку (Добавление)
натыкал одной рукой
сервис с состоянием ну да пофиг
Покинул форум
Сообщений всего: 29
Дата рег-ции: Авг. 2018
Помог: 0 раз(а)
Вроде всё отлично работает как надо, супер вот только:
1. Если напр. я хочу исключить поле "id", но оно напр. находится в несколько массивах, тогда оно исключается во всех. Как можно исключить определёную? Может можно прописать ключь напр. так "product_data.id".
2. Сейчас оба результата "process" и "headers" по отдельности в массивах, мне надо на выходе 1 массив, где [0] ключи будет перечисление "headers" и дальше уже "process" (т.е. Заголовки и потом Данные). Пробовал array_merge, но что-то не то вроде
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
1. Разумеется. Исключай и проверяй полные пути. Я думал ты сам можешь такое догадаться асилить. В питон же вроде собирался уходить)) вырос уже из пыха))
2. Внутри process вставляй хидеры перед отдачей результатов
Там же лучше и состояние сбрасывать для повторения использования. https://www.php.net/manual/ru/fu...rray-unshift.php
3. В конструктор. (Добавление)
Тогда и статику сделай приватной. (Добавление)
3 хотя лучше в process вторым параметром и сразу в статику, а еще лучше вторым параметром в flattenItem
Чем меньше у тебя состояние в классе тем лучше
По хорошему его у сервиса вообще быть не должно. Себе бы так не писал
Noobster
Отправлено: 21 Августа, 2019 - 15:41:41
Новичок
Покинул форум
Сообщений всего: 29
Дата рег-ции: Авг. 2018
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.