Самый быстрый способ сделать PHP array_filter для очень большого массива или загрузить меньше данных из файла?

проблема

У меня есть текстовый файл, который почти 2 Мб.
В нем есть строки с указанием времени, даты, имени и сообщения.
Я хотел бы сделать регулярное выражение в каждой строке, поэтому я начну с чтения файла в массив.

$array1 = file('<file_name>');

Между каждой строкой в ​​файле есть строка, которую я хотел бы пропустить.
На stackoverflow я обнаружил, что следующая часть кода ведьма, кажется, в порядке.

array_values( array_filter($array1, 'trim'));

Моя проблема в том, что это занимает очень много времени для обработки.

Вопросы

  1. Есть ли способ пропустить белые строки при чтении файла, прежде чем я сделаю массив, так что массив, с которого я начинаю, имеет гораздо меньше ключей?
  2. Если я должен использовать функцию array_filter. Какой способ быстрее и лучше всего использовать память?

$array2 = array_values( array_filter($array1));

или же

$array2 = array_values( array_filter($array1));
unset($array1);

0

Решение

Если вы хотите оптимизировать память, вам придется прочитать каждую строку и обработать ее.

  1. Открыть файл
  2. Цикл запуска
  3. читать строку
  4. технологическая линия
  5. сохранить обработанные данные
  6. Конец цикла

Используйте функции fopen, fread, fclose php. Вы найдете некоторую информацию Вот

голосует «data-shortcut =» V

Другие решения

1