Создание массива данных из файла с переменными

174
19 апреля 2018, 10:34

Здравствуйте! Ломаю голову 3 день, вопрос в следующем: есть файл с данными ввиде:

S1010 G1=16470996 G2=6410840 G3=1256281 G4=116381 G5=4186435 G6=4184187 G7=2219 G8=1069 G9=965905 G10=1835111 G11=552534 G12=649459 G13=32415 G14=25894 G15=7314 G16=6983323
S1020 G1=12298521 G2=4773652 G3=961877 G4=90638 G5=3155073 G6=3153681 G7=1908 G8=1027 G9=654794 G10=1321424 G11=391534 G12=441279 G13=11571 G14=9431 G15=2461 G16=5356600
S1030 G1=2172607 G2=733154 G3=130659 G4=12325 G5=511283 G6=511280 G7=40 G8=14 G9=91172 G10=9537 G11=6538 G12=98899 G13=5415 G14=4536 G15=494 G16=1318570

его я преобразую в масисив так $array = explode("/n", file_get_contents('file.ini'));

Но суть в том, что нужно далее складывать переменные - они же числа

например: нужно взять строку S1020 и число которое после G3 тоесть 961877 далее сложить это число с переменной из строки S1030 G12 тоесть 98899 и так далее...

Вообщем я не понимаю как создать эти переменные и как к ним обратиться. В идеале должно получится что-то в виде

$p1 = ($s1010G1+$s2010G2+$s4010G4+$s4210G16)-($s5010G4+$s5200G3);

где переменные сформированы из разных строк $s1010G1 = s1010 строка ; G1 переменная.

В итоге вс застопорилось на массиве вида:

    S1010
        [10] => G1=16470996
        [11] => G2=6410840
        [12] => G3=1256281
        [13] => G4=116381
        [14] => G5=4186435
        [15] => G6=4184187
        [16] => G7=2219
        [17] => G8=1069
        [18] => G9=965905
        [19] => G10=1835111
        [20] => G11=552534
        [21] => G12=649459
        [22] => G13=32415
        [23] => G14=25894
        [24] => G15=7314
        [25] => G16=6983323
        [26] => 
    S1020
        [27] => G1=12298521
        [28] => G2=4773652
        [29] => G3=961877
        [30] => G4=90638
        [31] => G5=3155073
        [32] => G6=3153681
        [33] => G7=1908
        [34] => G8=1027
        [35] => G9=654794
        [36] => G10=1321424
        [37] => G11=391534
        [38] => G12=441279
        [39] => G13=11571
        [40] => G14=9431
        [41] => G15=2461
        [42] => G16=5356600
        [43] => 
Answer 1

один раз вы уже набор строк в массив преобразовали, далее преобразуйте и сами строки? и проводите вычисления на элементах массива.

//$lines = file("input.txt");
$lines = explode("\n", $txt);
$data = [];
foreach($lines as $l){
    $tmp = explode(' ', $l);
    $key = array_shift($tmp);
    $data[$key] = array_map(function($e){ 
                              list($k,$v) = explode("=",$e); 
                              return $v; 
                            }, 
                         $tmp);
}
print_r($data);

на выходе получите массив вида

Array(
   [S1010] => Array (
        [0] => 16470996
        [1] => 6410840
        [2] => 1256281
        [3] => 116381
        [4] => 4186435
        [5] => 4184187
        [6] => 2219
        [7] => 1069
        [8] => 965905
        [9] => 1835111
        [10] => 552534
        [11] => 649459
        [12] => 32415
        [13] => 25894
        [14] => 7314
        [15] => 6983323
    )
   ....

и ваша математика, очевидно, будет иметь вид $data['s1010'][0] + ...

Вы, конечно, можете привести все это дело и к переменным, если вам так угодно, просто вряд ли это можно считать практичным подходом. Для этих целей необходимо подготовить массив переменных, и воспользоваться функцией exctract:

foreach($lines as $l){
    $tmp = explode(' ', $l);
    $key = array_shift($tmp);
    foreach($tmp as $x){
        list($g, $v) = explode("=", $x);
        $data[$key.$g] = $v;
    }
}
extract($data);
print_r($S1010G1 + $S1010G2);
READ ALSO
WC_Order не возвращает нужные данные

WC_Order не возвращает нужные данные

Пытаюсь получить данные billing, но не получаетсяВот что выходит в итоге

155
headers->set('Content-Type','text/csv') не работает (Symfony)

headers->set('Content-Type','text/csv') не работает (Symfony)

Всем привет, я хочу сделать экспорт csv документа, для этого я использую Response:

169
Как правильно написать запрос к БД PDO

Как правильно написать запрос к БД PDO

Нужно написать стандартный запрос к БД используя PDO php ничего сложногоВот запрос, который я использую:

105