Здравствуйте! Ломаю голову 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] =>
один раз вы уже набор строк в массив преобразовали, далее преобразуйте и сами строки? и проводите вычисления на элементах массива.
//$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);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь получить данные billing, но не получаетсяВот что выходит в итоге
Всем привет, я хочу сделать экспорт csv документа, для этого я использую Response:
Нужно написать стандартный запрос к БД используя PDO php ничего сложногоВот запрос, который я использую: