我正在尝试编写使文本文件中所有成绩提高+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_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;
?>
答案 0 :(得分:1)
以相反的方式替换它-从最高到最低(而不是最低到最高)。这样,您将用5替换4,然后就没有4-接下来,您将3替换为4,依此类推-这样就没有重叠。
$file_contents = "1 2 3 4 5 4 5 2 1";
$result = str_replace(range(4, 0), range(5, 1), $file_contents);
echo $result;