@yar_stun
frontend-dev

Как записывать массивы с foreach в файл, и правильно доставать?

Здравствуйте!
Cтолкнулся с такой проблемой:
Циклом перебираю массив:
foreach($selectedProxiesCountry as $proxy) {

                file_put_contents($filename, serialize($proxy), FILE_APPEND);
        }

Внутри кода больше, Задача записать нужные мне массивы в файл, один за другим (использую FILE_APPEND).
В итоге одиночный массив для записи имеет такой вид:
Array
(
    [ip] => 185.64.209.18
    [port] => 8080
    [hostname] => 185.64.209.18
    [http] => 0
    [https] => 1
    [socks4] => 0
    [socks5] => 0
    [level] => 1
    [yandex] => 0
    [google] => 0
    [mailru] => 1
    [twitter] => 1
    [country_code] => RU
    [response] => 257
    [good_count] => 5
    [bad_count] => 1
    [last_check] => 2020-09-04 14:48:32
    [city] => Кстово
    [region] => Нижегородская область
    [real_ip] => 185.64.209.18
    [test_time] => 0.8
    [me] => 0
)

Все записывает в файл, отлично. Но когда хочу достать оттуда:
$readyProxiesArr = unserialize(file_get_contents($proxyFile));

выдает ErrorException' with message 'unserialize(): Error at offset 0 of (17865 bytes)
Пробовал записывать в json формате, насколько я понял, неправильно пишет один за другим массивы из цикла.
Прошу помощи, заранее спасибо!
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
@Tendor
Собираешь все, что нужно записать в один массив и записываешь. А так у тебя в файле просто текстом лежат друг за другом сериализированые массивы.

Если нужно отфильтровать - отфильтруй нужные данные, собери новый массив и сохраняй его целиком.
file_put_contents($filename, serialize($selectedProxiesCountry));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы