За последние 24 часа нас посетили 21803 программиста и 1013 роботов. Сейчас ищет 691 программист ...

как лучше разделить данные

Тема в разделе "PHP для новичков", создана пользователем andre2017, 1 сен 2017.

  1. andre2017

    andre2017 Новичок

    С нами с:
    3 авг 2017
    Сообщения:
    67
    Симпатии:
    2
    Есть набор данных по годам, которые нужно сохранить в файл и извлечь обратно максимально просто, без json

    2015

    1110 254000
    1150 28341477000
    1160 6760
    ...

    2014

    1110 15000
    1150 283417000
    1160 46580
    ... то есть например набор строк. где каждая строка начинается с года и далее идет несколько пар код:значение c разделителем двоеточие.

    Как расположить разделители '#' и ':', чтобы хранение было максимально компактным, а извлечение максимально простым, с помощью парочки preg_match_all.

    Например что то вроде
    #2015#код:значение:код:значение#2014#код:значение:код:значение...
    чтобы после извлечения создался двумерный массив
    год - пары код значение
    год - пары код значение
     
  2. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    PHP:
    1. file_put_contents('some.txt', implode(',', $arr));
    2. $arr = explode(',', file_get_contents('some.txt'));
    + array_chunk, если данные однаковы
    + explode/implode, если количество данных динамично
     
    andre2017 нравится это.
  3. andre2017

    andre2017 Новичок

    С нами с:
    3 авг 2017
    Сообщения:
    67
    Симпатии:
    2
    ну да... если данные сохранять в виде строк разделенных ВКПС, и храня Год всегда в начале, а суммы разложены в порядке возрастания кодов.
    (год, код1, код2, код3...)
    2015, Сумма, Сумма, Сумма...ВКПС
    2014, Сумма, Сумма, Сумма...ВКПС
    2013, Сумма, Сумма, Сумма...ВКПС

    А как мне прочитать из этой структуры в двумерный массив по годам?
    // создаем структуру:
    foreach ($A as $Year=>$val){
    $stroka .= $Year.',';
    foreach ($val as $Code=>$Summa){
    $stroka .= $Summa.',';
    }
    $stroka .='\r\n';
    }

    Читаем из структуры:
    ($arr = explode (',',$otchet);)
    чтобы получилось так:
    $arr[2015][0] - код0,сумма
    $arr[2015][1] - код1,сумма