Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php问题,试图更改文件中的多个数字。Str_替换替换所有内容,直到最大值_Php_Str Replace - Fatal编程技术网

Php问题,试图更改文件中的多个数字。Str_替换替换所有内容,直到最大值

Php问题,试图更改文件中的多个数字。Str_替换替换所有内容,直到最大值,php,str-replace,Php,Str Replace,我正在尝试制作一个脚本,将文本文件中的所有分数提高+1。像0->1,1->2等。5级不应该增加,因为最好从0-5级开始 问题是我的脚本提供了以下输出: 新职系: 5 5 5 5 5 5 应在何时提供: 新职系: 1 5 2 4 3 5 似乎str_replace()搜索0,将其转换为1,然后再次找到1并将其替换为2。。。。最后所有的成绩都是5分。有没有办法在每个年级只做一次?我尝试了preg\u replace(),但出现了错误: PHP警告:preg_replace():分隔符不能是字母数

我正在尝试制作一个脚本,将文本文件中的所有分数提高+1。像0->1,1->2等。5级不应该增加,因为最好从0-5级开始

问题是我的脚本提供了以下输出: 新职系:

5
5
5
5
5
5
应在何时提供: 新职系:

1
5
2
4
3
5
似乎
str_replace()
搜索0,将其转换为1,然后再次找到1并将其替换为2。。。。最后所有的成绩都是5分。有没有办法在每个年级只做一次?我尝试了
preg\u replace()
,但出现了错误:

PHP警告:preg_replace():分隔符不能是字母数字或反斜杠

这是我的剧本:

<?php
$file = 'grades.txt';
$file_contents = file_get_contents($file);

$fh = fopen($file, "w");
$file_contents = str_replace(['0','1','2','3','4'],['1','2','3','4','5'],$file_contents);

fwrite($fh, $file_contents);
fclose($fh);

echo "New grades:\n";
echo $file_contents;
?>

以相反的方式替换它-从最高到最低(而不是从最低到最高)。这样你将用5替换4,然后没有4-接下来,用4替换3,依此类推-因此没有重叠

$file\u contents=“1 2 3 4 5 2 1”;
$result=str\u replace(范围(4,0),范围(5,1),$file\u内容);
回声$结果;
  • 现场演示

谢谢!成功了!仍然需要在我的脚本中做一些其他修复,但这是主要问题。我想如果改变数字的话,也会有同样的表现。它按顺序替换-从第一个元素开始,然后是下一个元素,依此类推。它并不是一次完成全部任务。