Я использую str_replace()
для редактирования файла, и файл корректно отредактирован за исключением двух последних значений.
Код PHP:
public function makeLyer() {
$current_session = Session::getId();
$value[] = Input::get('variable');
$value[] = Input::get('scenario');
$value[]= Input::get('component');
$search[] = "MYVARIABLE";
$search[] = "ID_SCENARIO";
$search[] = "ID_COMPONENT";
for ($i = 1; $i != 11; $i++) {
$search[] = "lower".$i;
$search[] = "upper".$i;
}
$qgs_layer = file_get_contents("/carbone/carbone_test.qgs");
$getMinMax = //sql_query;
$getMinMax = get_object_vars($getMinMax[0]);
$min = $getMinMax['min'];
$max = $getMinMax['max'];
$range = ($max - $min) / 10;
$lower[0] = $min;
$upper[0] = $range + $lower[0];
for ($i = 1; $i != 10; $i++) {
$lower[$i] = $upper[$i - 1];
$upper[$i] = $upper[$i - 1] + $range;
}
for ($i = 0; $i < 10; $i++) {
$value[] = $lower[$i];
$value[] = $upper[$i];
}
$file_name = "/carbone/".$current_session."_layer.qgs";
$new_qgs_layer = str_replace($search, $value, $qgs_layer);
file_put_contents($file_name, $new_qgs_layer);
return Response::json($file_name, 200);
}
$value
содержитхорошее значение, но при их замене в файл записываются не значения $value
.
значение $value
и $search
:
$value = Array (
[0] => flux_balance
[1] => 1
[2] => 3
[3] => -2151
[4] => -1941
[5] => -1941
[6] => -1731
[7] => -1731
[8] => -1521
[9] => -1521
[10] => -1311
[11] => -1311
[12] => -1101
[13] => -1101
[14] => -891
[15] => -891
[16] => -681
[17] => -681
[18] => -471
[19] => -471
[20] => -261
[21] => -261
[22] => -51
)
$search =Array(
[0] => MYVARIABLE
[1] => ID_SCENARIO
[2] => ID_COMPONENT
[3] => lower1
[4] => upper1
[5] => lower2
[6] => upper2
[7] => lower3
[8] => upper3
[9] => lower4
[10] => upper4
[11] => lower5
[12] => upper5
[13] => lower6
[14] => upper6
[15] => lower7
[16] => upper7
[17] => lower8
[18] => upper8
[19] => lower9
[20] => upper9
[21] => lower10
[22] => upper10
)
Здесьlower10
и upper10
заменяются неверными значениями. Значения заменяются соответственно на «-21510» и «-19410», когда они должны быть «-261» и «-51».