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 :: Работа парсера с таблицами и массивами
Через принт выводится сложный массив. Мне нужно вывести этот массив обратно в таблицу вида <table>, но только нужных мне столбцов, причем в нужном порядке. По этой таблице непонятно зачем мне это нужно, но есть проблемы с таблицами, где заполнены не все поля и этот способ должен их обработать.
Подскажите пожалуйста как правильно вывести нужную информацию.
Строитель
Отправлено: 20 Апреля, 2018 - 10:39:51
Участник
Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 74 раз(а)
Torres90, добавьте пожалуйста к вашему посту дамп массива и структуру html-таблицы.
Torres90
Отправлено: 20 Апреля, 2018 - 11:05:50
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Апр. 2018
Покинул форум
Сообщений всего: 17
Дата рег-ции: Апр. 2018
Помог: 0 раз(а)
Строитель пишет:
Пустые элементы можно отфильтровать с помощью array_filter(), а сбросить ключи - с помощью array_values().
А если мне не нужно удалять пустые? В таблице могут быть изначально пустые поля, при парсере они тоже должны писаться в базу и заполняться также пустыми... Сейчас конкретно этого дампа, что я прислал надо просто вырезать первые 2 элемента в каждом подмассиве.
Строитель пишет:
Совет на будущее - для того, чтобы удобнее было с вашим дампом работать кому-то другому, публикуйте его с помощью var_export()
Я до сих пор не понял, что отменя требовалось при добавлении дампа...
Строитель
Отправлено: 20 Апреля, 2018 - 12:54:23
Участник
Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 74 раз(а)
Torres90 пишет:
Сейчас конкретно этого дампа, что я прислал надо просто вырезать первые 2 элемента в каждом подмассиве
Если фильтровать нельзя, тогда нужно выбирать срез массива array_slice(), таким образом отбрасывать первые два элемента в каждом массиве, чтобы получить необходимый размер.
Я до сих пор не понял, что отменя требовалось при добавлении дампа...
Просто распечатайте массив с помощью print_r(); и с помощью echo '<pre>', var_export($result), '</pre>'; и посмотрите, какую из полученных строк можно быстро скопировать и сохранить в переменную для дальнейшей работы с вашим массивом -- так вам станет понятнее.
Покинул форум
Сообщений всего: 17
Дата рег-ции: Апр. 2018
Помог: 0 раз(а)
К сожалению у меня не работает вывод. Связано ли это с тем, что информация в массив получается в этом же файле через file_get_contents или может слишком большой размер массива?
Имею ввиду, что из таблицы получаю массив в этом файле, а его сразу же извлекаем?
Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 74 раз(а)
Torres90, я на локальном сервере запускал ваш код, всё было ок. Включите отображение ошибок, может быть что-то прояснится.
Torres90
Отправлено: 21 Апреля, 2018 - 11:09:40
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Апр. 2018
Помог: 0 раз(а)
Строитель, спасибо! Все отлично работает, особенно порадовал вывод столбцов в нужных местах! Вчера не получалось видимо из-за того, что правки все делал с телефона.
А есть какой-то способ при парсинге дамп этот записать в файл, чтоб брать данные со своего сервера или это лучше делать с MySQL? Хотелось бы максимально ускорить процесс получения данных, а обновление информации в файле возможно через крон настроить.
Естественно записи не происходит, что может быть тут не так. Файл перезаписываться должен при каждом запросе.
Строитель
Отправлено: 23 Апреля, 2018 - 09:30:53
Участник
Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 74 раз(а)
Torres90, у вас в переменной $result массив, поэтому перед записью его нужно обрабатывать serialize(), а после чтения преобразовывать обратно к массиву с помощью unserialize().
Torres90
Отправлено: 23 Апреля, 2018 - 09:53:46
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Апр. 2018
Пока результат тот же... Права на текстовый файл 777. Путь до файла прямой прописан. Читать его буду в отдельном файле, этот будет исключительно автоматически обновлять информацию с полной перезаписью файла.
Строитель
Отправлено: 23 Апреля, 2018 - 21:18:40
Участник
Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 74 раз(а)
Скорее всего у вас ошибка из-за отсутствия директории. Я дописал проверку на существование директории, и её создание в случае отсутствия is_dir($dir) ?: mkdir($dir);, и запустил этот код на локалке - файл создан успешно, и сериализованный массив тоже в этот файл записан:
Покинул форум
Сообщений всего: 17
Дата рег-ции: Апр. 2018
Помог: 0 раз(а)
Строитель, вставил код из примера все заработало, причина как я понял у меня в пути была. Изменил путь в своем, тоже заработало... Однако не понимаю почему прямой путь не заработал... Видимо прописывается не ссылкой как у меня.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.