Php 为什么str_replace函数用文件中的错误值替换该值?
我正在使用Php 为什么str_replace函数用文件中的错误值替换该值?,php,laravel,Php,Laravel,我正在使用str_replace()编辑一个文件,该文件被正确编辑,除了最后两个值 PHP代码: 公共函数makeLyer(){ $current_session=session::getId(); $value[]=Input::get('variable'); $value[]=Input::get('scenario'); $value[]=Input::get('component'); $search[]=“MYVARIABLE”; $search[]=“ID\u场景”; $searc
str_replace()
编辑一个文件,该文件被正确编辑,除了最后两个值
PHP代码:
公共函数makeLyer(){
$current_session=session::getId();
$value[]=Input::get('variable');
$value[]=Input::get('scenario');
$value[]=Input::get('component');
$search[]=“MYVARIABLE”;
$search[]=“ID\u场景”;
$search[]=“ID\u组件”;
对于($i=1;$i!=11;$i++){
$search[]=“更低”。$i;
$search[]=“上限”。$i;
}
$qgs_layer=file_get_contents(“/carbone/carbone_test.qgs”);
$getMinMax=//sql\U查询;
$getMinMax=get_object_vars($getMinMax[0]);
$min=$getMinMax['min'];
$max=$getMinMax['max'];
$range=($max-$min)/10;
$lower[0]=$min;
$upper[0]=$range+$lower[0];
对于($i=1;$i!=10;$i++){
$lower[$i]=$lower[$i-1];
$upper[$i]=$upper[$i-1]+$range;
}
对于($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\u name,$new\u qgs\u layer);
返回响应::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”。这是因为代码将lower1
替换为-2151
,因此lower10
是lower1
0
,因此lower10
成为-21510
。(对upper 10
的解释相同
解决方案:如果您可以更改文件中的占位符,我建议您使用[]
格式化要搜索的字符串,例如:[lower1]
,…[lower10]