Здравствуйте! Ломаю голову 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);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей